1.下载并解压源码包 php官方下载页面 在/usr/local目录下操作

cd /usr/local

下载源码包

wget https://www.php.net/distributions/php-8.2.10.tar.gz
wget https://www.php.net/distributions/php-8.1.26.tar.gz
解压并进入目录
cd /usr/local/src/php/
tar -zxvf php-8.2.10.tar.gz && cd php-8.2.10
tar -zxvf php-8.1.26.tar.gz && cd php-8.1.26

2.安装依赖 依赖是根据开启的扩展决定的,以下的拓展是常用的,编译安装的好处之一,就是如果缺少拓展也很容易自行安装。

dnf -y groupinstall 'Development Tools'
dnf -y install wget libxml2-devel sqlite-devel bzip2-devel libcurl-devel libffi-devel libpng-devel libwebp-devel libjpeg-devel oniguruma libzip freetype freetype-devel libicu-devel

1)  Rocky9系列

隐藏内容
本内容需权限查看
  • 普通用户: 不可购买
  • VIP会员: 免费
  • 永久会员: 免费
已有1人解锁查看

2)Rocky8系列

隐藏内容
本内容需权限查看
  • 普通用户: 不可购买
  • VIP会员: 免费
  • 永久会员: 免费
已有1人解锁查看

3.编译安装

查看编译参数(可跳过,如果你不知道参数的作用)

./configure -help

编译参数如下:

cd php-8.1.26/
./configure --prefix=/usr/local/php --sysconfdir=/etc/php --with-openssl --with-zlib --with-bz2 --with-curl --enable-bcmath --enable-gd --with-webp --with-jpeg --with-mhash --enable-mbstring --with-imap-ssl --with-mysqli --enable-exif --with-ffi --with-zip --enable-sockets --with-pcre-jit --enable-fpm --with-pdo-mysql --enable-pcntl

上面的展开说明(使用的话直接复制上面的,这里是做解释用的)

./configure  
--prefix=/usr/local/php  #安装地址
--sysconfdir=/etc/php   #设置文件地址
--with-openssl  #启用ssl
--with-zlib  
--with-bz2  
--with-curl  #启用curl(必开)
--enable-bcmath  
--enable-gd  
--with-webp  
--with-jpeg  
--with-mhash  
--enable-mbstring  #必开,很多需要用到
--with-imap-ssl  
--with-mysqli  #mysqli函数,如果用pdo,可以补开
--enable-exif  
--with-ffi  #支持外挂C程序
--with-zip  
--enable-sockets  #开启socket
--with-pcre-jit  #开启jit
--enable-fpm  #开启fpm模式(必开)
--with-pdo-mysql   #支持mysql
--with-pdo-pgsql  #支持pgsql
--enable-pcntl

显示如下的提示,说明可以继续安装了

image-20231127103647925

编译安装,安装时间比较长,请耐心等待!

make && make install

编译完成后会显示类似如下信息: 里面包含了各种文件的地址,建议编译后截图保存,方便日后查看

Build complete.
Don't forget to run 'make test'.

Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20220829/
Installing PHP CLI binary: /usr/local/php/bin/
Installing PHP CLI man page: /usr/local/php/php/man/man1/
Installing PHP FPM binary: /usr/local/php/sbin/
Installing PHP FPM defconfig: /etc/php/
Installing PHP FPM man page: /usr/local/php/php/man/man8/
Installing PHP FPM status page: /usr/local/php/php/php/fpm/
Installing phpdbg binary: /usr/local/php/bin/
Installing phpdbg man page: /usr/local/php/php/man/man1/
Installing PHP CGI binary: /usr/local/php/bin/
Installing PHP CGI man page: /usr/local/php/php/man/man1/
Installing build environment: /usr/local/php/lib/php/build/
Installing header files: /usr/local/php/include/php/
Installing helper programs: /usr/local/php/bin/
program: phpize
program: php-config
Installing man pages: /usr/local/php/php/man/man1/
page: phpize.1
page: php-config.1
Installing PDO headers: /usr/local/php/include/php/ext/pdo/

4.添加系统用户

添加用户组,名字用www是因为通常php做web后端开发的,可以改成别的。

groupadd www

添加用户(一个不允许登录的用户)

useradd -g www -s /sbin/nologin www

5.配置

将配置文件复制到正确的位置(很多情况下修改配置不生效就是配置文件地址没搞对)

cp /usr/local/src/php/php-8.2.10/php.ini-development /usr/local/php/lib/php.ini
#################
cp /usr/local/src/php/php-8.1./p26hp.ini-development /usr/local/php/lib/php.ini
cp /etc/php/php-fpm.conf.default /etc/php/php-fpm.conf
cp /etc/php/php-fpm.d/www.conf.default /etc/php/php-fpm.d/www.conf

6.配置环境变量

直接在文件的最下面加入下面

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

保存退出后,在命令行刷新环境变量

source /etc/profile

输入以下命令,如果能够返回版本号,说明配置成功

php -v

正确返回如下的信息

[root@ldzcyhaliyunecs ~]#php -v
PHP 8.1.26 (cli) (built: Nov 29 2023 17:12:19) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.26, Copyright (c) Zend Technologies

7.配置php

修改默认session位置 创建session地址(也可以写成别的)

mkdir /usr/local/php/tmp && chmod -R 755 /usr/local/php/tmp

修改php.ini

vim /usr/local/php/lib/php.ini

找到session.save_path,修改后面内容为"/usr/local/php/tmp"(原本是“/tmp”) 找到expose_php = On;,修改On为Off。这个修改是在响应头中隐藏php信息。否则在响应头的X-Powered-By中会显示php版本(尽量不要让入侵者获取更多的信息)

配置php-fpm

vim /etc/php/php-fpm.d/www.conf

修改user=www,group=www(原本都是nobody)

8.systemctl管理(php-fpm)

创建脚本文件

vi /usr/lib/systemd/system/php-fpm.service
cat > /usr/lib/systemd/system/php-fpm.service << EOF
[Unit]
Description=php-fpm
After=syslog.target network.target

[Service]
Type=forking
ExecStart=/usr/local/php/sbin/php-fpm
ExecReload=/bin/kill -USR2 $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF

刷新systemctl

systemctl daemon-reload

开启、开机启动

systemctl start php-fpm && systemctl enable php-fpm && systemctl status php-fpm

至此php编译安装和php-fpm的启动就完成了

隐藏内容
本内容需权限查看
  • 普通用户: 不可购买
  • VIP会员: 免费
  • 永久会员: 免费
已有1人解锁查看
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。