在 Debian 上 LNMP 无法解析(通常是 PHP 不被解析,直接下载或显示源码),原因基本集中在 Nginx 没有正确把 PHP 交给 PHP-FPM 处理。下面按最常见原因给你系统排查。
必须存在类似配置:
location ~ \.php$ {
fastcgi_pass unix:/run/php/php-fpm.sock;
# 或
# fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
✅ 关键点
fastcgi_pass 必须存在SCRIPT_FILENAME 必须正确systemctl status php-fpm
# 或(Debian 常见)
systemctl status php8.2-fpm
✅ 正常状态应为:
Active: active (running)
启动 / 重启:
systemctl start php8.2-fpm
systemctl enable php8.2-fpm
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
cat /etc/php/8.2/fpm/pool.d/www.conf | grep listen
应看到:
listen = /run/php/php8.2-fpm.sock
❌ 常见错误:
nginx -t
systemctl reload nginx
server {
root /var/www/html;
index index.php index.html;
}
测试文件:
echo "<?php phpinfo();" > /var/www/html/test.php
访问:
http://服务器IP/test.php
chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html
Debian 默认有:
/etc/nginx/fastcgi_params
如果缺失,可手动补充:
include fastcgi_params;
| 检查项 | 命令 |
|---|---|
| Nginx 是否运行 | systemctl status nginx |
| PHP-FPM 是否运行 | systemctl status php8.2-fpm |
| Nginx 配置是否有 PHP | nginx -T |
| sock 是否一致 | ls /run/php/ |
| 是否重载 Nginx | nginx -t && systemctl reload nginx |
你可以直接贴出:
/etc/nginx/sites-enabled/defaultphp -vsystemctl status php*-fpm我可以 逐行帮你改到可用为止 ✅