在 Debian 上搭建或使用 LNMP(Linux + Nginx + MySQL/MariaDB + PHP) 时,排错通常遵循“分层定位”的思路:先确认服务是否运行,再看日志,最后检查配置。下面给你一套实用排错流程。
systemctl status nginx
systemctl status mariadb # 或 mysql
systemctl status php8.2-fpm # 版本按实际
若未运行:
systemctl start nginx
systemctl enable nginx
nginx -t
常见错误:
duplicate locationfastcgi_pass 路径错误root 指向不存在目录tail -n 50 /var/log/nginx/error.log
常见错误:
Permission denied(目录权限)connect() failed (111: Connection refused) → PHP-FPM 没跑File not found → root 或 fastcgi_param SCRIPT_FILENAME 错ps aux | grep nginx
Nginx 通常用户是 www-data
chown -R www-data:www-data /var/www
chmod -R 755 /var/www
systemctl status php8.2-fpm
查看监听方式:
grep listen /etc/php/8.2/fpm/pool.d/www.conf
通常是:
listen = /run/php/php8.2-fpm.sock
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
tail -n 50 /var/log/php8.2-fpm.log
mysql -u root -p
若失败:
systemctl status mariadb
journalctl -xe
InnoDB 文件损坏ALTER USER 重置bind-address = 127.0.0.1浏览器报什么?
PHP 是否报错
<?php
phpinfo();
或开启错误显示:
display_errors = On
ss -tlnp | grep 80
ufw status
✅ nginx -t
✅ systemctl status
✅ 看 error.log
✅ PHP-FPM socket 匹配
✅ 文件权限是 www-data
✅ 数据库能本地连
如果你愿意,可以把具体报错信息(浏览器提示 / Nginx 日志 / PHP 日志)贴出来,我可以直接帮你定位到具体配置。