在 Ubuntu 上让 PHP-FPM 和 Nginx 配合使用,核心就是:
Nginx 把 PHP 请求通过 FastCGI 转给 PHP-FPM 处理。
下面一步步说明(以 Ubuntu 20.04 / 22.04 为例)。
sudo apt update
sudo apt install nginx php-fpm
安装后一般会有:
php8.1-fpm(版本可能不同)/run/php/php8.1-fpm.sock查看 PHP 版本:
php -v
查看 PHP-FPM 配置:
sudo nano /etc/php/8.1/fpm/pool.d/www.conf
确认这一行存在(一般默认):
listen = /run/php/php8.1-fpm.sock
重启 PHP-FPM:
sudo systemctl restart php8.1-fpm
编辑 Nginx 站点配置:
sudo nano /etc/nginx/sites-available/default
改成类似下面这样(重点看 location ~ \.php$):
server {
listen 80;
server_name your_domain_or_ip;
root /var/www/html;
index index.php index.html;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
}
创建测试文件:
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
检查 Nginx 配置:
sudo nginx -t
重启 Nginx:
sudo systemctl restart nginx
浏览器访问:
http://服务器IP/info.php
能看到 PHP 信息页就成功了 ✅
通常是:
fastcgi_pass 的 socket 路径写错检查:
systemctl status php8.1-fpm
ls -l /run/php/
确保 Nginx 用户(www-data)能访问 socket:
ps aux | grep nginx
ps aux | grep php-fpm
PHP-FPM 用户一般也是 www-data
如果你要用端口(不推荐本地用):
PHP-FPM:
listen = 127.0.0.1:9000
Nginx:
fastcgi_pass 127.0.0.1:9000;
如果你愿意,可以告诉我:
我可以给你更精确的配置。