HCRM博客

如何在CentOS上编译安装PHP?

在CentOS系统上编译安装PHP,可以提供更高的自定义性和优化选项,以下是一个详细的步骤指南,包括环境准备、依赖包安装、PHP源码下载与解压、配置编译选项、编译与安装、环境变量配置以及常见问题解决等内容。

一、环境准备

1、更新系统和安装基础开发工具:确保系统软件包是最新的,并安装必要的编译工具。

如何在CentOS上编译安装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版本以确认安装成功。

如何在CentOS上编译安装PHP?-图2
(图片来源网络,侵权删除)
  • 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库,可以通过以下步骤解决。

如何在CentOS上编译安装PHP?-图3
(图片来源网络,侵权删除)
  • 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版本
配置PHPFPMcp ...
/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正在运行。

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

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