在CentOS上编译PHP是一个相对复杂的过程,但通过遵循正确的步骤和注意事项,可以顺利完成,以下是详细的步骤和相关FAQs:
下载源码
1、获取最新稳定版源代码:从PHP官方网站下载页面(HTTPS://www.php.net/downloads)获取最新稳定版的源代码压缩包,本文以Gzip格式为例。
2、切换到源代码存放目录并下载:
```bash
cd /usr/local/src
curl LO https://www.php.net/distributions/php8.1.5.tar.gz
```
安装编译环境依赖
1、安装编译器和构建工具:确保系统中安装了C编译器(如GCC)和自动化构建工具Make,运行以下命令安装:
```bash
yum install y gcc make
```
2、安装必要的库和依赖:根据PHP版本和所需功能,安装相应的库和依赖,对于PHP 8.1.7,需要安装以下依赖:
```bash
yum install y libxml2devel openssldevel sqlitedevel libcurldevel libicudevel gccc++ oniguruma onigurumadevel libxsltdevel libpngdevel libjpegdevel freetypedevel libsodium libsodiumdevel epelrelease y
```
解压缩源码并定制功能
1、解压源码包并进入目录:
```bash
tar xvf php8.1.5.tar.gz
cd php8.1.5
```
2、配置编译选项:使用configure
脚本定制PHP功能,为了支持FPM、OpenSSL、zlib、cURL、GD图形库等功能,可以运行以下命令查看所有可用配置选项:
```bash
./configure help | less
```
然后根据实际需求选择配置选项。
```bash
./configure \
prefix=/usr/local/php \
withconfigfilepath=/usr/local/php/etc \
enablefpm \
withopenssl \
withzlib \
withcurl \
enablegd \
withfreetypedir \
withjpegdir \
withpngdir \
withzlib \
withlibxmldir=/usr \
enablexml \
disablerpath \
enablebcmath \
enableshmop \
enablesysvsem \
enableinlineoptimization \
withcurl \
enablembregex \
enablembstring \
enableintl \
enablepcntl \
enableftp \
withgettext \
disablefileinfo \
enableopcache \
withsodium=/usr/local/libsodium
```
编译与安装
1、编译PHP:运行make
命令进行编译,这一步可能需要一些时间,具体取决于系统性能和所选配置选项。
```bash
make
```
2、安装PHP:编译完成后,运行make install
命令将PHP安装到指定位置。
```bash
make install
```
3、配置PHP:将生成的php.iniproduction
或php.inidevelopment
文件复制到/usr/local/php/etc/
目录下,并重命名为php.ini
,然后根据需要编辑php.ini
文件以调整PHP设置。
4、添加环境变量(可选):如果希望在命令行中直接运行php
命令,可以将PHP的bin
目录添加到系统的PATH
环境变量中。
```bash
echo 'export PATH="/usr/local/php/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
```
5、验证安装:运行php v
命令查看PHP版本信息,确认安装成功。
相关FAQs
1、问题:在编译过程中遇到缺少依赖库的错误怎么办?
答案:如果在运行configure
脚本时遇到缺少依赖库的错误提示,可以根据错误信息安装相应的依赖库,如果提示缺少libzip
库,可以运行yum install y libzipdevel
来安装,如果错误信息不明确或无法解决,可以参考PHP官方文档或搜索相关解决方案。
2、问题:如何卸载已编译安装的PHP?
答案:要卸载已编译安装的PHP,可以手动删除安装目录(如/usr/local/php
),并从PATH
环境变量中移除相关的路径,还需要检查是否有其他配置文件或服务依赖于已卸载的PHP版本,并进行相应的调整,在执行卸载操作之前务必备份重要数据以防万一。