Linux编译安装PHP7.4.24及启动
1. 下载安装包PHP安装包
-
点此进入官网选择对应安装包
php-7.4.24.tar.gz
-
将安装包上传至服务器自定义目录,如/usr/local/
-
解压安装包
tar -zxvf php-7.4.24.tar.gz
2. 配置安装包
2.1 先安装前置插件,不管有没有都安装一下
yum install gcc-c++ libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel gd sqlite sqlite-devel net-snmp net-snmp-devel oniguruma oniguruma-devel
2.2 配置php
- 进入解压后的目录
cd php-7.4.24
- 执行php的配置命令如下:
./configure --prefix=/usr/local/php \ # php的安装路径
--with-config-file-path=/usr/local/php/etc \
--with-mysqli=mysqlnd \
--enable-pdo \
--with-pdo-mysql=mysqlnd \
--with-iconv-dir=/usr/local/ \
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
--with-pcre-regex \
--with-zlib \
--with-bz2 \
--enable-calendar \
--disable-phar \
--with-curl \
--enable-dba \
--with-libxml-dir \
--enable-ftp \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-zlib-dir \
--with-freetype-dir \
--enable-gd-jis-conv \
--with-mhash \
--enable-mbstring \
--disable-opcache \
--enable-pcntl \
--enable-xml \
--disable-rpath \
--enable-shmop \
--enable-sockets \
--enable-zip \
--enable-bcmath \
--with-snmp \
--disable-ipv6 \
--with-gettext \
--disable-rpath \
--disable-debug \
--enable-embedded-mysqli \
--with-mysql-sock=/usr/local/mysql \
--with-apxs2=/usr/bin/apxs
2.3 执行配置命令可能会出现如下错误
- 问题一
解决办法:
git clone https://github.com/kkos/oniguruma
cd oniguruma
./configure --prefix=/usr --libdir=/lib64
make && make install
- 问题二
Sorry, I cannot run apxs. Possible reasons follow:
1. Perl is not installed
2. apxs was not found. Try to pass the path using --with-apxs2=/path/to/apxs
3. Apache was not built using --enable-so (the apxs usage page is displayed)
The output of /usr/local/apache/bin/apxs follows:./configure: line 6669: /usr/local/apache/b
in/apxs: No such file or directoryconfigure: error: Aborting
解决办法:
yum install -y perl*
yum install -y httpd-devel
2.4 运行php的配置命令出现如下示例,即为配置成功
3编译安装包
3.1 执行编译命令(可能要花一点时间)
make && make install
- 如下图即为编译成功,编译后的文件在./configure --prefix=/usr/local/php \ # php的安装路径
3.2 在之前编译的源码包中,找到 php.ini-production,复制到/usr/local/php下,并改名为php.ini:
cp php.ini-production /usr/local/php/php.ini
- [可选项] 设置让PHP错误信息打印在页面上
display_errors = On
- 将 php.ini 文件中的配置项 cgi.fix_pathinfo 设置为 0 。
vim /usr/local/php/php.ini
#定位到 cgi.fix_pathinfo= 并将其修改为如下所示:
cgi.fix_pathinfo=0
3.2 修改配置文件
- 进入安装后的目录
cd /usr/local/php/etc/
#修改当前目录下的配置文件php-fpm.conf.default为 php-fpm.conf
cp php-fpm.conf.default php-fpm.conf
#编辑一下php-fpm.conf
vim php-fpm.conf
pid = run/php-fpm.pid
user = www
group = www
#在进入php-fpm.d 目录下
cd php-fpm.d
#修改当前目录下的配置文件 www.conf.default为 www.conf
cp www.conf.default www.conf
3.3 新建用户组及用户
groupadd www
useradd -g www www
4. 启动停止php-fpm
4.1 启动
/usr/local/php/sbin/php-fpm
没有任何的输出,表示成功了!!!
php-fpm占用的是9000端口,我们查看下进程:
ps -ef|grep php-fpm
查看端口:
netstat -tnl | grep 9000
说明php启动成功
4.2 停止php
我们在新安装扩展后,是需要重新php-fpm的,已使扩展生效。
最简单粗暴的重新php-fpm的方式是:
先找到php-fpm的进程号,kill 掉,再用/usr/local/php/sbin/php-fpm 这样启动。
其实还有更多温和的方法,就是使用信号。
INT, TERM 立刻终止
QUIT 平滑终止
USR1 重新打开日志文件
USR2 平滑重载所有worker进程并重新载入配置和二进制模块
示例
php-fpm 关闭:
kill -INT `cat /usr/local/php/var/run/php-fpm.pid`
php-fpm 重启:
kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`