在CentOS上安装和配置phpFPM是一个多步骤的过程,涉及安装必要的依赖包、编译PHP源代码以及配置相关的服务,以下是一个详细的指南,包括常见问题的解答。
安装前准备
确保系统已经安装了必要的开发工具和库:

- yum y install gcc automake autoconf libtool make
- yum y install gcc gccc++ glib2devel libxml2devel zlibdevel bzip2devel curldevel e2fsprogsdevel krb5devel libmcryptdevel libjpegdevel libpngdevel freetypedevel libxsltdevel recodedevel libicudevel openssldevel sqlitedevel wget
下载并解压PHP源代码
从PHP官方网站下载所需的PHP版本源代码,例如PHP 7.4.12:
- wget https://www.php.net/distributions/php7.4.12.tar.gz
- tar xzvf php7.4.12.tar.gz
- cd php7.4.12
配置PHP编译选项
在编译PHP时,需要指定一些配置选项,以确保PHPFPM和其他所需模块被正确编译:
- ./configure prefix=/usr/local/php \
- withconfigfilepath=/usr/local/php/etc \
- enablefpm \
- withfpmuser=nginx \
- withfpmgroup=nginx \
- enableinlineoptimization \
- disabledebug \
- disablerpath \
- enableshared \
- enablesoap \
- withxmlrpc \
- withopenssl \
- withmcrypt \
- withpcreregex \
- withsqlite3 \
- withzlib \
- enablebcmath \
- withiconv \
- withbz2 \
- enablecalendar \
- withcurl \
- withcdb \
- enabledom \
- enableexif \
- enablefileinfo \
- enablefilter \
- withpcredir \
- enableftp \
- withgd \
- withopenssldir \
- withjpegdir \
- withpngdir \
- withfreetypedir \
- enablegdnativettf \
- enablegdjisconv \
- withgettext \
- withgmp \
- enablejson \
- enablembstring \
- enablembregex \
- enablembregexbacktrack \
- withlibmbfl \
- withonig \
- enablepdo \
- withmysqli=mysqlnd \
- withpdomysql=mysqlnd \
- withzlibdir \
- withpdosqlite \
- withreadline \
- enablesession \
- enableshmop \
- enablesimplexml \
- enablesockets \
- enablesysvmsg \
- enablesysvsem \
- enablesysvshm \
- enablewddx \
- withlibxmldir \
- withxsl \
- enablezip \
- enablemysqlndcompressionsupport \
- withpear \
- enableopcache
编译和安装PHP
执行以下命令以编译和安装PHP:
- make && make install
配置PHPFPM
将配置文件复制到合适的位置,并修改启动用户和组:
- cd /usr/local/php/etc
- cp phpfpm.conf.default phpfpm.conf
- cp sapi/fpm/init.d.phpfpm init.d/phpfpm
- cp sapi/fpm/www.conf.default sapi/fpm/www.conf
编辑www.conf
文件,设置正确的监听地址和用户组:
- [www]
- listen = /var/run/phpfpm/phpfpm.sock
- user = nginx
- group = nginx
- pm = dynamic
- pm.max_children = 50
- pm.start_servers = 5
- pm.min_spare_servers = 5
- pm.max_spare_servers = 35
- chdir = /
启动PHPFPM服务
创建PHPFPM启动脚本,并将其添加到系统服务中:

- cp sapi/fpm/init.d/phpfpm /etc/init.d/phpfpm
- chmod +x /etc/init.d/phpfpm
- chkconfig add phpfpm
- service phpfpm start
配置Nginx使用PHPFPM
编辑NGINX配置文件(例如/etc/nginx/nginx.conf
),添加以下配置以支持PHP处理:
- location ~ \.php$ {
- try_files $uri =404;
- fastcgi_pass unix:/var/run/phpfpm/phpfpm.sock;
- fastcgi_index index.php;
- include fastcgi_params;
- fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
- }
重启Nginx服务以应用更改:
- systemctl restart nginx
验证安装
创建一个测试PHP文件,例如/usr/share/nginx/html/test.php
如下:
- <?php phpinfo(); ?>
然后在浏览器中访问http://your_server_ip/test.php
,如果看到PHP信息页面,说明PHPFPM已成功安装并配置。
常见问题及解答(FAQ)
Q1: PHP编译时出现“oniguruma”错误怎么办?
A1: CentOS默认可能没有安装oniguruma
库,可以通过以下命令安装:
- yum install oniguruma onigurumadevel y
然后再重新编译PHP。
Q2: PHPFPM无法启动或报错怎么办?
A2: 检查PHPFPM的错误日志,通常位于/var/log/phpfpm/error.log
,根据日志中的提示进行相应的调整,常见的问题包括权限不足、配置文件错误等,确保/var/run/phpfpm/phpfpm.sock
文件的权限正确,并且phpfpm.conf
中的用户和组设置正确。