在CentOS系统上编译安装PHP,可以提供更高的自定义性和优化选项,以下是一个详细的步骤指南,包括环境准备、依赖包安装、PHP源码下载与解压、配置编译选项、编译与安装、环境变量配置以及常见问题解决等内容。
一、环境准备
1、更新系统和安装基础开发工具:确保系统软件包是最新的,并安装必要的编译工具。

- sudo yum update y
- sudo yum groupinstall 'Development Tools'
2、安装依赖包:PHP编译需要一些库和头文件,可以通过以下命令安装:
- sudo yum install libxml2devel openssldevel bzip2devel libcurldevel libjpegdevel libpngdevel freetypedevel gddevel libmcryptdevel readlinedevel libxsltdevel zlibdevel glibcdevel glib2devel ncursesdevel curldevel epelrelease
二、下载与解压PHP源码
1、创建目录并下载PHP源码:建议将源码放在/usr/local/src
目录下。
- mkdir p /usr/local/src
- cd /usr/local/src
- wget https://www.php.net/distributions/php8.0.0.tar.gz
- tar zxvf php8.0.0.tar.gz
- cd php8.0.0
三、配置编译选项
1、配置编译选项:使用./configure
命令配置PHP的编译选项,以下是一个示例配置,可以根据需要增减选项。
- ./configure \
- prefix=/usr/local/php \
- withconfigfilepath=/etc \
- withmysqli \
- withpdomysql \
- withgd \
- enablembstring \
- enablefpm \
- enableopcache \
- withcurl \
- withfreetypedir \
- withjpegdir \
- withpngdir \
- withzlibdir \
- withbz2 \
- withopenssl \
- withpcreregex \
- withreadline
四、编译与安装
1、编译并安装PHP:执行以下命令进行编译和安装。
- make && sudo make install
五、配置环境变量
1、设置PHP路径:将PHP的二进制目录添加到系统PATH中。
- echo "export PATH=\$PATH:/usr/local/php/bin" >> /etc/profile
- source /etc/profile
2、验证安装:检查PHP版本以确认安装成功。

- php v
六、配置PHPFPM
1、复制配置文件:将默认的PHPFPM配置文件复制到合适的位置,并进行必要的修改。
- cp sapi/phpfpm.conf.default /usr/local/php/etc/phpfpm.conf
- cp sapi/phpfpm.d/www.conf.default /usr/local/php/etc/phpfpm.d/www.conf
2、启动PHPFPM:使用以下命令启动PHPFPM服务。
- /usr/local/php/sbin/phpfpm fpmconfig /usr/local/php/etc/phpfpm.conf
3、设置开机自启动:为了在系统启动时自动运行PHPFPM,可以创建一个systemd服务文件。
- sudo vi /etc/systemd/system/phpfpm.service
添加以下内容:
- [Unit]
- Description=The PHP FastCGI Process Manager
- After=network.target
- [Service]
- Type=simple
- PIDFile=/usr/local/php/var/run/phpfpm.pid
- ExecStart=/usr/local/php/sbin/phpfpm nodaemonize
- Restart=always
- [Install]
- WantedBy=multiuser.target
保存并退出后,启用并启动服务:
- sudo systemctl enable phpfpm
- sudo systemctl start phpfpm
七、常见问题及解决
1、缺少libzip库:在编译PHP时可能会提示缺少libzip库,可以通过以下步骤解决。

- wget https://nih.at/libzip/libzip1.5.2.tar.gz
- tar zxvf libzip1.5.2.tar.gz
- cd libzip1.5.2
- ./configure
- make && sudo make install
2、off_t undefined错误:在64位系统上编译时,可能会出现off_t类型未定义的错误,解决方法如下:
- echo "/usr/local/lib64" > /etc/ld.so.conf.d/usr_local_lib.conf
- sudo ldconfig
步骤 | 命令 | 描述 |
环境准备 | sudo yum update y sudo yum groupinstall 'Development Tools' | 更新系统并安装基础开发工具 |
安装依赖包 | sudo yum install ... | 安装PHP编译所需的依赖包 |
下载与解压PHP源码 | wget https://... tar zxvf ... | 下载并解压PHP源码 |
配置编译选项 | ./configure ... | 配置PHP编译选项 |
编译与安装 | make && sudo make install | 编译并安装PHP |
配置环境变量 | echo "export PATH=$PATH:... >> /etc/profile" source /etc/profile | 设置PHP路径 |
验证安装 | php v | 检查PHP版本 |
配置PHPFPM | cp ... /usr/local/php/sbin/phpfpm fpmconfig ... | 复制并配置PHPFPM,启动服务 |
设置开机自启动 | sudo vi /etc/systemd/system/phpfpm.service sudo systemctl enable phpfpm sudo systemctl start phpfpm | 创建并启动PHPFPM的systemd服务 |
常见问题及解决 | wget https://... echo "/usr/local/lib64" > ... sudo ldconfig | 解决libzip库缺失和off_t undefined错误 |
九、常见问题FAQs
Q1:如何解决“checking for libzip... configure: error: system libzip must be upgraded to version >= 0.11”错误?
A1:这是由于系统自带的libzip版本过低导致的,解决方法是先删除旧版本的libzip,然后下载并编译安装新版本的libzip。
- yum remove y libzip
- wget https://nih.at/libzip/libzip1.2.0.tar.gz
- tar zxvf libzip1.2.0.tar.gz
- cd libzip1.2.0
- ./configure
- make && make install
Q2:如何配置Nginx以支持PHPFPM?
A2:为了使Nginx支持PHPFPM,需要编辑NGINX配置文件,通常位于/etc/nginx/nginx.conf
或/etc/nginx/conf.d/default.conf
,添加以下配置:
- server {
- listen 80;
- server_name your_domain_or_ip;
- root /path_to_your_website;
- index index.php index.html index.htm;
- location ~ \.php$ {
- include snippets/fastcgiphp.conf;
- fastcgi_pass 127.0.0.1:9000;
- fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
- include fastcgi_params;
- }
- }
fastcgi_pass
应指向PHPFPM的监听地址和端口(默认为127.0.0.1:9000),还需确保PHPFPM正在运行。