温馨提示×

debian lnmp为何报404

小樊
51
2026-09-20 02:25:01
栏目: 智能运维

在 Debian 上搭建 LNMP(Linux + Nginx + MySQL + PHP) 环境时,访问页面出现 404,通常不是 PHP 本身的问题,而是 Nginx 配置或路径不对。下面按最常见原因逐一排查。


一、最常见原因(80% 情况)

1️⃣ Nginx 站点根目录配置错误

你访问的 URL 在服务器上根本不存在。

检查:

ls -l /var/www/html/

Nginx 配置示例(正确):

server {
    listen 80;
    server_name example.com;

    root /var/www/html;
    index index.php index.html;

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

✅ 确认:

  • root 指向真实存在的目录
  • 文件真的在里面(例如 index.php)

2️⃣ 访问的是 PHP 文件但被当静态文件处理

URL 是:

http://ip/index.php

结果 404

原因:Nginx 没有 PHP 解析配置

✅ 必须有这一段:

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}

⚠️ 注意:

  • PHP 版本号要匹配(php8.1 / php8.2 / php7.4)
  • php-fpm 必须运行

检查:

systemctl status php8.2-fpm

二、Nginx 配置未生效

3️⃣ 改了配置没重载

nginx -t
systemctl reload nginx

三、权限问题(也会表现为 404)

4️⃣ 文件权限或属主错误

chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html

四、WordPress / 框架类 404

5️⃣ 伪静态(rewrite)没配置

例如 Laravel / WordPress:

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

少了这句,除首页外全是 404


五、确认你访问的是哪个 server

6️⃣ 多个 server 冲突

nginx -T | grep server_name

确保你访问的域名/IP 命中正确 server


六、快速自检清单 ✅

# 1. 文件存在?
ls /var/www/html/index.php

# 2. Nginx 配置正确?
nginx -t

# 3. PHP-FPM 在跑?
systemctl status php8.2-fpm

# 4. 错误日志
tail -n 50 /var/log/nginx/error.log

七、如果你愿意,我可以精准帮你

你可以直接贴:

  1. nginx -T 输出
  2. 访问的 URL
  3. 项目路径
  4. 错误日志内容

我可以一行一行帮你改到不 404。

0 踩