您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# PHP5.6中php-fpm如何编译安装
## 前言
PHP-FPM(FastCGI Process Manager)是PHP的FastCGI实现,它提供了更好的进程管理功能,尤其适合高负载环境下的PHP应用。虽然PHP5.6已经停止官方支持,但在某些特定场景下(如遗留系统维护),仍可能需要手动编译安装。本文将详细介绍从源码编译PHP5.6及php-fpm的全过程。
---
## 一、环境准备
### 1.1 系统要求
- Linux操作系统(本文以CentOS 7为例)
- root或sudo权限
- 基础开发工具链
- 至少1GB可用磁盘空间
- 推荐内存2GB以上
### 1.2 安装依赖包
```bash
yum groupinstall "Development Tools"
yum install epel-release
yum install -y \
libxml2-devel \
openssl-devel \
curl-devel \
libjpeg-devel \
libpng-devel \
freetype-devel \
libmcrypt-devel \
libtool-ltdl-devel \
bison \
re2c \
libicu-devel \
libxslt-devel \
gcc-c++ \
autoconf
groupadd www
useradd -g www www -s /sbin/nologin
官方已归档的下载地址:
wget https://www.php.net/distributions/php-5.6.40.tar.gz
echo "1369a51eace1e15a227dc9f9cc9e1475d7f5803e php-5.6.40.tar.gz" | sha1sum -c -
tar zxvf php-5.6.40.tar.gz
cd php-5.6.40
./configure \
--prefix=/usr/local/php56 \
--with-config-file-path=/usr/local/php56/etc \
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
--enable-mbstring \
--enable-zip \
--enable-bcmath \
--enable-pcntl \
--enable-shmop \
--enable-sysvsem \
--enable-sockets \
--with-curl \
--with-openssl \
--with-mcrypt \
--with-mhash \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--enable-opcache \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd
参数 | 作用 |
---|---|
--enable-fpm |
启用php-fpm支持 |
--with-fpm-* |
设置php-fpm运行用户 |
--enable-opcache |
启用Zend Opcache加速 |
mysqlnd |
使用PHP内置MySQL驱动 |
若出现依赖缺失错误:
# 示例:解决libiconv缺失
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.16.tar.gz
tar zxvf libiconv-1.16.tar.gz
cd libiconv-1.16
./configure --prefix=/usr/local/libiconv
make && make install
make -j $(nproc)
make install
/usr/local/php56/bin/php -v
# 应输出类似:PHP 5.6.40 (cli)...
cp php.ini-production /usr/local/php56/etc/php.ini
cp /usr/local/php56/etc/php-fpm.conf.default /usr/local/php56/etc/php-fpm.conf
; /usr/local/php56/etc/php-fpm.conf
[global]
pid = run/php-fpm.pid
error_log = log/php-fpm.log
[www]
listen = 127.0.0.1:9000
listen.allowed_clients = 127.0.0.1
user = www
group = www
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 8
mkdir -p /usr/local/php56/var/log
chown -R www:www /usr/local/php56/var
cat > /etc/systemd/system/php-fpm56.service <<EOF
[Unit]
Description=PHP 5.6 FastCGI Process Manager
After=syslog.target network.target
[Service]
Type=forking
PIDFile=/usr/local/php56/var/run/php-fpm.pid
ExecStart=/usr/local/php56/sbin/php-fpm
ExecReload=/bin/kill -USR2 \$MNPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl start php-fpm56
systemctl enable php-fpm56
echo 'export PATH=/usr/local/php56/bin:$PATH' > /etc/profile.d/php56.sh
source /etc/profile.d/php56.sh
cat > /var/www/html/test.php <<EOF
<?php
phpinfo();
EOF
server {
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
}
# 查看错误日志
tail -f /usr/local/php56/var/log/php-fpm.log
# 检查端口监听
netstat -tulnp | grep 9000
权限控制:
chown -R root:www /usr/local/php56
find /usr/local/php56 -type d -exec chmod 755 {} \;
find /usr/local/php56 -type f -exec chmod 644 {} \;
php.ini安全设置:
expose_php = Off
disable_functions = exec,passthru,shell_exec,system
cgi.fix_pathinfo=0
进程隔离:
; php-fpm.conf
listen.mode = 0660
security.limit_extensions = .php
Opcache配置:
zend_extension=opcache.so
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
进程管理优化:
pm = dynamic
pm.max_children = $(free -m | awk '/Mem:/ {print int($2*0.8/100)}')
pm.process_idle_timeout = 10s
TCP优化:
echo 'net.core.somaxconn = 65535' >> /etc/sysctl.conf
sysctl -p
手动升级流程:
systemctl stop php-fpm56
make clean
git pull origin PHP-5.6
./buildconf --force
备份策略:
# 配置文件备份
tar czvf php56-backup-$(date +%Y%m%d).tar.gz \
/usr/local/php56/etc \
/etc/systemd/system/php-fpm56.service
通过本文详细的步骤,您已经成功在系统中编译安装了PHP5.6与php-fpm。虽然PHP5.6已不再接收安全更新,但在特定环境下仍可通过合理的配置和安全加固继续使用。建议在条件允许时尽快升级到受支持的PHP版本。
注意:生产环境使用EOL软件存在安全风险,建议仅用于测试或隔离环境。 “`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。