HCRM博客

如何在CentOS上编译安装PHP?

在CentOS系统上编译安装PHP是一个涉及多个步骤的过程,包括下载安装包、安装依赖库、配置编译选项以及最终的编译和安装,以下是详细的步骤和注意事项:

一、准备工作

1、更新系统并安装必要的开发工具

如何在CentOS上编译安装PHP?-图1
(图片来源网络,侵权删除)
   yum update y
   yum groupinstall 'Development Tools' y

2、安装PHP编译所需的依赖库

   yum install libxml2devel openssldevel bzip2devel libcurldevel libjpegdevel libpngdevel freetypedevel gmpdevel libmcryptdevel readlinedevel libxsltdevel zlibdevel glibcdevel glib2devel ncursesdevel curldevel db4devel libXpmdevel libX11devel gddevel gmpdevel expatdevel xmlrpcc xmlrpccdevel libicudevel libmcryptdevel libmemcacheddevel y

二、下载PHP源码

1、创建目录并进入

   mkdir /package
   cd /package

2、下载PHP源码

以PHP 8.0.0为例,可以从PHP官方网站下载对应版本的源码包。

   wget https://www.php.net/distributions/php8.0.0.tar.gz

3、解压源码包

   tar zxvf php8.0.0.tar.gz
   cd php8.0.0

三、配置编译选项

1、配置编译参数

如何在CentOS上编译安装PHP?-图2
(图片来源网络,侵权删除)

在配置前,建议先查看configure脚本的帮助信息,以便了解可用的编译选项。

   ./configure help

2、执行配置命令

根据需求添加相应的编译选项,以下是一个常见的配置示例:

   ./configure \
       prefix=/usr/local/php \
       withconfigfilepath=/usr/local/php/etc \
       enablefpm \
       withfpmuser=www \
       withfpmgroup=www \
       withmysqli \
       withpdomysql \
       withopenssl \
       withcurl \
       withgd \
       withjpegdir \
       withpngdir \
       withfreetypedir \
       withzlib \
       withbz2 \
       enablembstring \
       enablembregex \
       withmhash \
       enablesoap \
       enablesockets \
       enableopcache \
       enableinlineoptimization \
       withpear \
       withgettext \
       withiconvdir \
       withkerberos \
       withlibdir=lib64 \
       withlibxmldir \
       enablexml \
       enablezip \
       enablebcmath \
       enablesession \
       enablesysvsem \
       enablesysvshm \
       enablepcntl \
       enableshmop \
       withpcreregex \
       withxsl \
       withxmlrpc

四、编译与安装

1、编译源码

   make && make install

2、检查安装结果

   /usr/local/php/bin/php v

五、配置环境变量

将PHP的可执行文件路径添加到系统的环境变量中,以便在终端中直接使用php命令,编辑/etc/profile文件,添加以下内容:

export PATH=/usr/local/php/bin:$PATH

然后使更改生效:

source /etc/profile

六、配置PHPFPM

1、复制配置文件

   cp php.iniproduction /usr/local/php/etc/php.ini
   cp sapi/fpm/phpfpm.conf.default /usr/local/php/etc/phpfpm.conf
   cp sapi/fpm/phpfpm.d/www.conf.default /usr/local/php/etc/phpfpm.d/www.conf

2、启动PHPFPM

   /usr/local/php/sbin/phpfpm fpmconfig /usr/local/php/etc/phpfpm.conf

七、配置Nginx(可选)

如果使用Nginx作为Web服务器,需要配置Nginx以支持PHP,编辑Nginx的配置文件(如/etc/nginx/nginx.conf),添加以下内容以支持FastCGI:

location ~ \.php$ {
    root           html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

然后重启Nginx服务:

systemctl restart nginx

八、常见问题及解决方案

1、缺少libzip依赖:如果遇到“checking for libzip... configure: error: system libzip must be upgraded to version >= 0.11”错误,需要先安装或升级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

2、缺少sqlite3依赖:如果遇到“error: Package requirements (sqlite3 > 3.7.4) were not met”,需要安装libsqlite3xdevel。

   yum install libsqlite3xdevel y

3、off_t undefined错误:如果在配置时遇到“configure: error: off_t undEFIned; check your library configuration”,可能是由于缺少某些库文件,可以尝试将以下路径添加到ld.so.conf文件中:

   echo '/usr/local/lib64' >> /etc/ld.so.conf
   echo '/usr/lib64' >> /etc/ld.so.conf
   ldconfig

4、zipconf.h文件缺失:如果遇到“fatal error: zipconf.h: No such file or directory”错误,可以尝试复制缺失的文件:

   cp /usr/local/lib/libzip/include/zipconf.h /usr/local/include/zipconf.h

九、相关问答FAQs

Q1: 为什么在CentOS上编译安装PHP而不是使用包管理器?

A1: 编译安装PHP可以提供更高的灵活性和定制性,允许用户选择特定的PHP版本和扩展,而不受操作系统默认包管理器提供的软件包限制,编译安装还可以确保PHP及其依赖库是最新的,从而提高性能和安全性,编译安装过程相对复杂,需要一定的技术背景和经验,对于生产环境,建议仔细测试编译安装的PHP版本以确保其稳定性和兼容性。

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/15963.html

分享:
扫描分享到社交APP
上一篇
下一篇