在Rocky Linux 9系统中编译安装PHP7.4           

在Rocky Linux 9系统中编译安装PHP7.4

作者 hxwsq_华 于 2024-12-12 16:38:00.0 发表于 浙江    最近修改于 2025-02-11 14:39:05.0     本文浏览量:105人次

一、说明

1.1 操作系统版本

本文使用的操作系统版本:Rocky Linux 9.5

cat /etc/rocky-release

1.2 准备工作

1.PHP-7.4.33源码包(下载

2.OpenSSL-1.1.1w源码包(下载

3.curl-8.11.1源码包(下载

4.libzip-1.11.2源码包(下载

二、步骤

2.1 获取所需的源码包

2.2 安装所需的依赖包

dnf install -y epel-release
dnf config-manager --set-enabled crb
dnf install -y wget gcc gcc-c++ make cmake perl flex bison autoconf automake libpsl libpsl-devel bzip2 bzip2-devel zlib zlib-devel freetds freetds-devel ncurses ncurses-devel libjpeg-turbo libjpeg-turbo-devel libpng libpng-devel libtiff libtiff-devel freetype freetype-devel pam pam-devel openssl openssl-devel libxml2 libxml2-devel gettext gettext-devel pcre pcre-devel libcurl libcurl-devel openldap openldap-devel mhash mhash-devel libtool-ltdl libtool-ltdl-devel gd gd-devel net-snmp net-snmp-devel libicu libicu-devel sqlite sqlite-devel oniguruma oniguruma-devel libsodium libsodium-devel expat expat-devel libzip libzip-devel c-ares c-ares-devel

2.3 编译安装OpenSSL

PHP7.4及其扩展需依赖OpenSSL的版本:1.0.1 <= OpenSSL < 3.0,而Rocky Linux 9中自带的OpenSSL版本为OpenSSL3.2,因此需要单独编译安装低版本的OpenSSL,此处以OpenSSL1.1.1w为例

2.3.1 解压OpenSSL源码包并配置OpenSSL1.1.1w

tar -zxf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w && ./config --prefix=/usr/local/openssl-1.1.1w

2.3.2 编译和安装OpenSSL1.1.1w

make && make install

2.3.3 往系统中添加OpenSSL1.1.1w动态库链接

---添加动态库
echo "/usr/local/openssl-1.1.1w/lib" >> /etc/ld.so.conf.d/openssl-1.1.1w.conf && ldconfig
---检查结果
ldconfig -p | grep "/usr/local/openssl-1.1.1w"
---检查版本
/usr/local/openssl-1.1.1w/bin/openssl version

2.4 编译安装curl

---使用OpenSSL1.1.1w版本来编译安装curl,用于PHP的curl扩展

2.4.1 解压curl源码包并配置curl-8.11.1

tar -zxf curl-8.11.1.tar.gz
cd curl-8.11.1 && ./configure --prefix=/usr/local/curl --enable-ares --without-nss --disable-ldaps --disable-ldap --with-ssl=/usr/local/openssl-1.1.1w

2.4.2 编译和安装curl-8.11.1

make && make install

2.5 编译安装libzip

---使用OpenSSL1.1.1w版本来编译安装libzip,用于PHP的zip扩展

2.5.1 解压libzip源码包并配置libzip-1.11.2

tar -zxf libzip-1.11.2.tar.gz
cd libzip-1.11.2
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/libzip \
-DOPENSSL_ROOT_DIR=/usr/local/openssl-1.1.1w \
-DOPENSSL_LIBRARIES=/usr/local/openssl-1.1.1w/lib \
-DENABLE_OPENSSL=on \
-DENABLE_GNUTLS=off \
-DENABLE_MBEDTLS=off

2.5.2 编译和安装libzip-1.11.2

make && make install

2.6 编译安装PHP7.4

2.6.1 导入环境变量

---编译PHP前引入GCC环境变量,传递openssl,curl,libzip头文件和动态库路径
export CFLAGS="-I/usr/local/openssl-1.1.1w/include -I/usr/local/curl/include -I/usr/local/libzip/include"
export LIBS="-L/usr/local/openssl-1.1.1w/lib -L/usr/local/curl/lib -L/usr/local/libzip/lib64"

2.6.2 解压PHP源码包并配置PHP-7.4.33

tar -zxf php-7.4.33.tar.gz
cd php-7.4.33
./configure --prefix=/usr/local/php \
--enable-fpm \
--sysconfdir=/usr/local/php/etc \
--with-config-file-path=/usr/local/php/etc \
--enable-mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-iconv-dir=/usr/lib64 \
--with-openssl \
--with-expat \
--with-freetype \
--with-jpeg \
--with-webp \
--with-zlib \
--with-bz2 \
--with-curl \
--with-sodium \
--with-mhash \
--with-zip \
--enable-gd \
--enable-gd-jis-conv \
--enable-xml \
--enable-bcmath \
--enable-dba \
--enable-shmop \
--enable-pcntl \
--enable-calendar \
--enable-inline-optimization \
--enable-gd-jis-conv \
--enable-mbregex \
--enable-sysvshm \
--enable-soap \
--enable-mbstring \
--enable-shmop \
--enable-sysvmsg \
--enable-sockets \
--enable-ftp \
--enable-exif \
--disable-rpath \
--without-pear \
--enable-opcache

2.6.3 编译和安装PHP-7.4.33

make && make install
安装完成后如图所示

2.7 配置PHP服务开机自启动

cp ./php.ini-production /usr/local/php/etc/php.ini
cp ./sapi/fpm/init.d.php-fpm /usr/local/php/
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
cat << 'EOF' > /usr/lib/systemd/system/php-fpm.service
[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target
[Service]
Type=simple
PIDFile=/usr/local/php/var/run/php-fpm.pid
ExecStart=/usr/local/php/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/bin/kill -SIGINT $MAINPID
[Install]
WantedBy=multi-user.target
EOF
systemctl enable --now php-fpm.service

2.8 检查安装结果

2.8.1 查看PHP版本

echo "export PATH=/usr/local/php/bin:\$PATH" >> /etc/profile
source /etc/profile
php --version

2.8.2 查看PHP的OpenSSL扩展版本信息

php -i | grep OpenSSL

2.8.3 验证PHP的OpenSSL扩展功能是否正常

---配置OpenSSL和curl的证书
echo "curl.cainfo=/etc/pki/tls/certs/ca-bundle.crt" >> /usr/local/php/etc/php.ini
echo "openssl.cafile=/etc/pki/tls/certs/ca-bundle.crt" >> /usr/local/php/etc/php.ini
---用PHP  file_get_contents 函数访问 https 页面如能抓取则表示openssl 配置无误
php -r 'echo file_get_contents("https://www.baidu.com");'

本站声明

本站所有文章均由作者(hxwsq_华)个人整理和发布,仅供学习和参考,严禁任何形式的复制和转载!
如有疑问,请点击此处给作者发邮件,谢谢!