在CentOS上编译PHP是一个相对复杂的过程,涉及多个步骤和依赖项,下面我将详细描述如何在CentOS上编译PHP,并提供相关的FAQs。
准备工作
1.1 更新系统

确保你的CentOS系统是最新的,打开终端并运行以下命令:
- sudo yum update y
1.2 安装必要的软件包
编译PHP需要一些开发工具和库,运行以下命令来安装它们:
- sudo yum groupinstall "Development Tools" y
- sudo yum install openssldevel libxml2devel bzip2devel libjpegdevel libpngdevel freetypedevel libmcryptdevel libcurldevel libxsltdevel gddevel ldapdevel y
1.3 下载PHP源码
你可以从PHP官方网站下载PHP的源码,下载PHP 7.4.16版本:
- cd /usr/src
- sudo wget https://www.php.net/distributions/php7.4.16.tar.gz
- sudo tar xzf php7.4.16.tar.gz
- cd php7.4.16
配置和编译PHP
2.1 配置PHP

在配置PHP之前,你需要决定要启用哪些扩展,你可以通过./configure
脚本的参数来指定这些选项。
- ./configure prefix=/usr/local/php \
- withconfigfilepath=/usr/local/php \
- enablembstring \
- withcurl \
- withopenssl \
- withzlib \
- enableftp \
- withgd \
- enablesession \
- withmysqli \
- withpdomysql \
- withxml \
- withxsl \
- withbz2 \
- withsodium=shared,/usr \
- withgettext \
- withiconvdir \
- withfreetypedir=/usr/include/freetype2 \
- withjpegdir \
- withpngdir \
- enableexif \
- enablesoap \
- enablesockets \
- enablesysvsem \
- enablesysvshm \
- enableopcache \
- withoutpear
2.2 编译和安装PHP
配置完成后,运行以下命令来编译和安装PHP:
- make j$(nproc)
- sudo make install
配置PHP
3.1 复制配置文件模板
PHP安装完成后,复制默认的配置文件模板到合适的位置:
- sudo cp /usr/local/php/php.iniproduction /usr/local/php/php.ini
3.2 更新环境变量
为了使系统能够找到PHP的可执行文件,需要更新环境变量,编辑/etc/profile
文件并添加以下行:
- export PATH=/usr/local/php/bin:$PATH
- export PHP_INI_DIR=/usr/local/php/php.ini
然后运行以下命令使更改生效:
- source /etc/profile
验证安装
验证PHP是否安装成功并正常工作:
- php v
你应该会看到类似以下的输出,显示PHP的版本信息:
- PHP 7.4.16 (cli) (built: Mar 19 2021 15:48:36) ( NTS )
- Copyright (c) The PHP Group
- Zend Engine v3.4.0, Copyright (c) Zend Technologies
- with Zend OPcache v7.4.16, enabled
相关问答FAQs
Q1: 如何更改PHP的配置文件路径?
A1: 你可以通过修改php.ini
文件中的php_ini_scanned_files
设置来更改PHP配置文件的路径,如果你希望将配置文件放在/etc/php/php.ini
,你可以在php.ini
文件中找到以下行并进行修改:
- ; Directory in which the loadable extensions (modules) reside.
- ; http://php.net/extensiondir
- extension_dir = "/usr/local/php/lib/php/extensions/nodebugnonzts20190902"
将其改为:
- ; Directory in which the loadable extensions (modules) reside.
- ; http://php.net/extensiondir
- extension_dir = "/etc/php/extensions"
然后在/etc/php/php.ini
中添加以下内容:
- [PHP]
- include_path = ".:/usr/local/php/share/pear"
确保新的配置文件路径被包含在环境变量中:
- export PHP_INI_DIR=/etc/php/php.ini
- source /etc/profile
Q2: 如何添加新的PHP扩展?
A2: 添加新的PHP扩展通常涉及以下几个步骤:
1、下载扩展源码:从扩展的官方网站下载源码,下载redis
扩展:
- cd /usr/src
- sudo wget https://pecl.php.net/get/redis
- sudo tar xzf redis
- cd redis5.3.4
2、编译和安装扩展:使用phpize
准备编译环境,然后运行./configure
和make
命令进行编译和安装。
- sudo /usr/local/php/bin/phpize
- ./configure withphpconfig=/usr/local/php/bin/phpconfig
- make && sudo make install
3、启用扩展:在php.ini
文件中添加以下行以启用新安装的扩展:
- extension=redis.so
4、重启Web服务器:如果你在使用Web服务器(如apache或Nginx),请重启服务器以使更改生效,对于Apache:
- sudo systemctl restart httpd
对于Nginx,通常不需要重启,因为PHPFPM会自动检测到新的扩展。