在CentOS上编译安装PHP是一个相对复杂的过程,需要多个步骤来确保正确安装和配置,本文将详细介绍如何在CentOS 7上从源代码编译并安装PHP 8.1,包括必要的依赖安装、编译选项以及如何配置Nginx以支持PHP应用。
编译安装PHP
1. 依赖环境
在开始编译PHP之前,首先需要安装一些必需的依赖包,这些依赖包包括C编译器(如GCC)、Make工具、以及其他一些库文件,具体命令如下:
yum y install gcc gccc++ make wget libxml2devel openssldevel curldevel \ libjpegdevel libpngdevel freetypedevel bison autoconf automake libtool cmake zlibdevel pcredevel gd gddevel
2. 下载并解压
需要从PHP官网下载最新的PHP源码包,并将其解压到指定目录中,这里以PHP 8.1.0为例:
cd /usr/local/src wget https://www.php.net/distributions/php8.1.0.tar.gz tar zxvf php8.1.0.tar.gz cd php8.1.0
3. 配置、编译安装
在解压后的目录下,使用./configure
脚本来配置PHP的编译选项,可以根据实际需求调整以下配置选项:
./configure prefix=/usr/local/php8 \ withconfigfilepath=/usr/local/php8 \ enablefpm \ withfpmuser=nginx \ withfpmgroup=nginx \ withmysqli \ withpdomysql \ withopenssl \ withzlib \ enablesockets \ enablezip \ withcurl \ withgd \ withjpegdir \ withfreetypedir \ enablembstring \ withcurl \ enableftp \ withgettext \ enablesession \ withlibxmldir \ withopenssl \ withpcreregex \ withzlib \ enablesoap \ enableopcache
配置完成后,使用make
命令进行编译,然后使用make install
命令进行安装:
make make install
4. 创建系统用户、系统用户组
为了安全起见,建议为PHP创建一个单独的用户和用户组:
groupadd php useradd r g php s /sbin/nologin php
5. 创建链接
为了让系统能够找到新安装的PHP可执行文件,需要创建相应的软链接:
ln s /usr/local/php8/bin/php /usr/bin/php ln s /usr/local/php8/sbin/phpfpm /usr/sbin/phpfpm
6. 自动启动PHPFPM
为了能够在系统启动时自动运行PHPFPM服务,需要创建一个systemd服务文件:
vim /usr/lib/systemd/system/phpfpm.service
在文件中添加以下内容:
[Unit] Description=PHPFPM Service After=network.target [Service] Type=simple PIDFile=/run/phpfpm/phpfpm.pid ExecStart=/usr/sbin/phpfpm daemonize ExecReload=/bin/kill USR2 $MAINPID PrivateTmp=true User=php Group=php [Install] WantedBy=multiuser.target
保存文件后,使用以下命令启用并启动PHPFPM服务:
systemctl daemonreload systemctl start phpfpm systemctl enable phpfpm
7. 配置 Nginx 使其支持 PHP 应用
需要配置Nginx以支持PHP应用,编辑Nginx的默认站点配置文件:
vim /usr/local/nginx/conf/nginx.conf
在server
块中添加以下配置:
location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; include fastcgi_params; }
保存文件后,重新加载Nginx配置以使更改生效:
/usr/local/nginx/sbin/nginx s reload
依赖安装
如果系统中已经安装了旧版本的PHP,建议先将其卸载以避免潜在的冲突:
yum remove y php
根据编译PHP时所需的依赖项,安装相应的扩展包,如果需要支持Redis扩展,可以执行以下命令:
pecl install redis echo "extension=redis.so" > /usr/local/php8/etc/php.ini
FAQs(常见问题解答)
问题1:编译PHP时遇到缺少依赖库的错误怎么办?
答:如果在编译PHP过程中遇到缺少某个依赖库的错误提示,可以根据错误信息安装相应的依赖包,如果错误提示缺少libxml2库,可以执行yum install y libxml2devel
来安装该依赖包,同样地,对于其他缺失的依赖库也可以采取类似的方法进行安装。
问题2:如何检查已安装的PHP版本?
答:可以通过在终端中输入php v
命令来查看已安装的PHP版本信息,如果命令输出了PHP的版本号和其他相关信息,则说明PHP已成功安装并可以在系统中使用。