在 Ubuntu 上,PHP-FPM 本身不会“主动连接”Web 服务器,而是 由 Web 服务器(Nginx / Apache)通过 socket 或 TCP 连接 PHP-FPM。下面按常见场景给你完整说明。
PHP-FPM 提供两种监听方式:
listen = /run/php/php-fpm.sock
listen = 127.0.0.1:9000
Ubuntu 默认 使用 socket。
sudo apt update
sudo apt install php-fpm
php -v
sudo systemctl start php-fpm
sudo systemctl enable php-fpm
sudo systemctl status php-fpm
Ubuntu 中服务名通常是:
php8.1-fpm
php8.2-fpm
php8.3-fpm
ls /run/php/
示例:
php8.2-fpm.sock
server {
listen 80;
server_name example.com;
root /var/www/html;
index index.php index.html;
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
sudo nginx -t
sudo systemctl reload nginx
sudo a2enmod proxy_fcgi
sudo systemctl restart apache2
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/html
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php8.2-fpm.sock|fcgi://localhost"
</FilesMatch>
</VirtualHost>
原因:
✅ 检查:
ls -l /run/php/php8.2-fpm.sock
ps aux | grep php-fpm
sudo chown www-data:www-data /run/php/php8.2-fpm.sock
# 1. PHP-FPM 是否运行
systemctl status php8.2-fpm
# 2. socket 是否存在
ls /run/php/
# 3. Web 服务器配置是否正确
nginx -t 或 apache2ctl -S
# 4. 测试 PHP
echo "<?php phpinfo();" > /var/www/html/info.php
Ubuntu 中 PHP-FPM 是被动服务,由 Nginx/Apache 通过 socket 或 TCP 连接它。
如果你愿意,可以告诉我:
我可以给你 精确到命令级别 的配置方案。