在统信UOS(UOS)上运行PHP脚本并确保Web服务器正常处理请求,仅安装php-cli远远不够——必须正确安装并配置PHP-FPM服务。否则,访问.php文件时,浏览器可能直接下载源码,或返回502 Bad Gateway错误。这一步无法省略,切勿认为“仅安装cli就能凑合使用”。

下面直接进入实际操作,从安装、配置到最终验证,每个环节都是生产环境稳定运行必须扎实完成的关键步骤。
安装PHP核心与FPM服务
统信UOS基于Debian体系,官方软件源已预置PHP 8.2等稳定版本,直接使用apt命令安装即可,无需更换软件源或手动编译,操作简便省心。
首先更新软件包索引,并同时升级基础组件:
sudo apt update && sudo apt upgrade -y
接着安装PHP解释器、PHP-FPM进程管理器,以及开发中常用的扩展:
sudo apt install -y php-fpm php-cli php-mysql php-curl php-gd php-mbstring php-xml php-zip php-bcmath php-opcache
安装完成后,首先确认PHP版本及关键模块是否已成功加载:
php -v && php -m | grep -E "(fpm|mysql|curl|gd)"
这里有一个细节需要特别注意:查看PHP-FPM的实际服务名称。执行以下命令,记下输出的完整名称(例如php8.2-fpm),后续所有systemctl操作均需使用此完整名称:
ls /lib/systemd/system/php*-fpm.service
配置PHP-FPM监听为TCP模式
默认情况下,PHP-FPM采用Unix socket通信,路径类似/run/php/php*.sock。然而,权限问题经常导致异常,Nginx连接时容易返回502错误。改为127.0.0.1:9000的TCP模式更为稳定,且便于使用curl直接调试,排查问题时能节省大量精力。
修改方法十分简单,编辑主池配置文件:
sudo cp /etc/php/*/fpm/pool.d/www.conf /etc/php/*/fpm/pool.d/www.conf.bak
sudo nano /etc/php/*/fpm/pool.d/www.conf
关键操作:删除原有的listen = /run/php/php*.sock行,将其替换为listen = 127.0.0.1:9000。
同时,将user = www-data和group = www-data修改为当前登录的用户名(例如uosuser)。否则,Nginx以非root用户连接9000端口时将被拒绝,耗费大量时间也找不到问题根源。
修改完成后保存并退出,重载服务使配置生效:
sudo systemctl reload php*-fpm
注意将命令中的*替换为之前查到的实际版本号,例如8.2。
启用并验证PHP-FPM服务
第一步,设置开机自启,并立即启动服务:
sudo systemctl enable php*-fpm
sudo systemctl start php*-fpm
检查服务状态,输出显示active才表示正常运行:
sudo systemctl is-active php*-fpm
第二步,在Web根目录下创建测试文件:
echo "" | sudo tee /var/www/html/info.php
注意将文件属主改为PHP-FPM运行用户:
sudo chown uosuser:uosuser /var/www/html/info.php
第三步(强烈推荐执行),测试端口响应是否正常。首先安装FastCGI测试工具:
sudo apt install libcgi-fast-perl
然后执行本地探针请求:
SCRIPT_FILENAME=/var/www/html/info.php REQUEST_METHOD=GET cgi-fcgi -bind -connect 127.0.0.1:9000 | head -20
如果返回的HTML片段中包含PHP Version和Configuration File等字样,说明PHP-FPM已能正常响应请求。至此,运行环境已完全就绪,后续配置Nginx或其他Web服务器时,只需将请求转发至127.0.0.1:9000即可。
