温馨提示×

lnmp常见错误有哪些

小樊
50
2026-08-31 19:04:01
栏目: 编程语言

LNMP 是指 Linux + Nginx + MySQL/MariaDB + PHP 的运行环境,在实际使用和维护中,常见错误主要集中在配置、权限、版本兼容、服务异常等方面。下面按组件和场景总结常见错误及排查思路。


一、Nginx 常见错误

1. 502 Bad Gateway

常见原因:

  • PHP-FPM 未启动或崩溃
  • Nginx 与 PHP-FPM 通信方式配置错误(sock / port)
  • PHP 执行超时或内存不足

排查:

ps aux | grep php-fpm
netstat -lntp | grep 9000
tail -f /var/log/php-fpm/error.log

2. 404 Not Found

常见原因:

  • root 路径配置错误
  • index 文件未指定
  • 伪静态(rewrite)规则错误

示例:

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

3. 403 Forbidden

常见原因:

  • 目录无访问权限
  • index 文件不存在
  • SELinux 限制(CentOS)

解决:

chown -R www:www /site
chmod -R 755 /site

4. Nginx 启动失败

常见原因:

  • 配置文件语法错误
  • 端口被占用(如 80)

检查:

nginx -t
lsof -i:80

二、PHP / PHP-FPM 常见错误

5. PHP 页面空白

常见原因:

  • PHP 报错被关闭
  • 代码致命错误

解决:

error_reporting(E_ALL);
ini_set('display_errors', 1);

或查看:

/var/log/php-fpm/error.log

6. PHP 扩展缺失

报错示例:

Class 'mysqli' not found

解决:

php -m | grep mysqli
yum install php-mysqli

7. PHP-FPM 重启无效

原因:

  • 修改了 pool 配置未 reload
  • 进程数配置不合理
systemctl reload php-fpm

三、MySQL / MariaDB 常见错误

8. 无法连接数据库

报错:

Access denied for user 'root'@'localhost'

原因:

  • 密码错误
  • 权限不足
  • 使用 socket 登录

解决:

GRANT ALL ON *.* TO 'user'@'localhost' IDENTIFIED BY 'pass';
FLUSH PRIVILEGES;

9. MySQL 启动失败

常见原因:

  • 磁盘空间不足
  • 配置文件错误
  • InnoDB 损坏

查看:

journalctl -xe
cat /var/log/mysqld.log

10. 数据库太慢 / 锁表

  • 缺少索引
  • 慢查询
  • 连接数过多
SHOW PROCESSLIST;

四、权限与文件类错误

11. 上传文件失败

原因:

  • upload_tmp_dir 无权限
  • PHP 上传大小限制
upload_max_filesize = 50M
post_max_size = 50M

12. 网站目录权限混乱

推荐结构:

/site
 ├── public (web root)
 ├── runtime (可写)

五、环境与版本问题

13. PHP 与 MySQL 版本不兼容

例如:

  • PHP 8 + 旧 mysqli 写法
  • MySQL 8 默认 caching_sha2_password

14. 多版本 PHP 冲突

  • 命令行 PHP 与 Web PHP 不一致
php -v
php-fpm -v

六、日志排查通用思路

# Nginx
/var/log/nginx/error.log

# PHP
/var/log/php-fpm/error.log

# MySQL
/var/log/mysqld.log

# 系统
journalctl -u nginx
journalctl -u php-fpm

如果你愿意,可以告诉我:

  • 你用的是 哪个 LNMP 一键包(如 lnmp.org / 宝塔 / 自己编译)
  • 遇到的具体报错信息

我可以直接帮你定位问题。

0 踩