下载php二进制包:
官网地址:https://www.php.net/releases/
PHP: Releaseshttps://www.php.net/releases/在里边可以选择自己要下载的包进行下载;
下载完成后进行解压:
tar xvzf php-7.3.12.tar.gz
解压后 进入目录进行预编译:
cd php-7.3.12
选择要编译的模块进行配置(我这选择了常用的模块,根据自己实际情况来进行选择模块编译):
./configure --prefix=/usr/local/php-7.3.12 --with-config-file-path=/usr/local/php/etc --with-mysqli --with-pdo-mysql --with-mysql-sock=/usr/local/mysql/mysql.sock --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-curl --with-gd --with-gmp --with-zlib --with-xmlrpc --with-openssl --without-pear --with-snmp --with-gettext --with-mhash --with-libxml-dir=/usr --with-ldap-lib=/usr/lib64 --with-ldap-sasl --with-fpm-user=nginx --with-fpm-group=nginx --enable-xml --enable-fpm --enable-ftp --enable-bcmath --enable-soap --enable-shmop --enable-sysvsem --enable-sockets --enable-inline-optimization --enable-maintainer-zts --enable-mbregex --enable-mbstring --enable-pcntl --enable-zip --disable-fileinfo --disable-rpath --enable-libxml --enable-opcache --enable-mysql
这里我指定用户和用户组是nginx,因为我在这之前已经安装了nginx,用nginx来做web服务器;
预编译后出现以下提示可以视为预编译成功:
然后执行 编译以及安装:
make && make install
安装成功后:
在编译的源码包中,找到 php.ini-production,复制重命名为php.ini
[root@slave php-7.3.12]# pwd
/usr/local/php-7.3.12
cp -a php.ini-production php.ini
[可选项] 设置让PHP错误信息打印在页面上,在php.ini中找到如下配置并修改:
display_errors = On
将 php.ini 文件中的配置项 cgi.fix_pathinfo 设置为 0 。
vim /usr/local/php/php.ini
#定位到 cgi.fix_pathinfo= 并将其修改为如下所示:
cgi.fix_pathinfo=0
修改配置信息:
cd /usr/local/php-7.3.12/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
这里的user和group我直接在编译的时候指定的是nginx,所以我这里直接使用nginx,没有配置www
新建用户组及用户(如果修改配置中的用户的话)
groupadd www
useradd -g www www
启动停止php-fpm
启动
/usr/local/php-7.3.12/sbin/php-fpm
没有任何的输出,表示成功了!!!
php-fpm占用的是9000端口,我们查看下进程:
ps -ef|grep php-fpm
这个监听端口号可以修改,可以在www.conf文件中修改;
修改完需要重启php-fpm
停止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`
然后可以在nginx中配置来测试php:
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_pass 127.0.0.1:9001;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
在/usr/share/nginx/html中写了一个index.php文件以便访问:
<?php
phpinfo();
?>
使用phpinfo()函数可以在浏览器上查看php详细信息:
可参考:Linux编译安装PHP7.4.24及启动_linux安装php7.4-CSDN博客