贝利信息

PHP本地测试显示404怎么弄_PHP本地404错误修复方式【方法】

日期:2026-01-17 00:00 / 作者:雪夜
本地PHP显示404的首要原因是Web服务未启动或端口未监听,需用netstat检查80/8000端口;其次可能是PHP内置服务器缺少router.php导致静态资源404;再者是XAMPP/WAMP/MAMP的DocumentRoot配置错误或.htaccess重写规则失效。

Apache 或 Nginx 没启动或没监听 80/8000 端口

本地跑 PHP 显示 404,第一反应不是代码问题,而是 Web 服务压根没起来。比如用 php -S 启动了内置服务器,但浏览器却访问了 http://localhost/(默认走 Apache/Nginx),自然 404。

检查方式很简单:

PHP 内置服务器没指定路由器文件(router.php)导致静态资源 404

php -S 启动时,如果项目里有 CSS/JS 图片等静态文件,不加 router.php,PHP 内置服务器默认只处理 .php 文件,其他一律返回 404。

解决方法是写一个最小化 router.php

if (preg_match('/\.(?:png|jpg|jpeg|gif|css|js|ico|xml|txt|pdf|woff2|woff|ttf)$/', $_SERVER["REQUEST_URI"])) {
    return false; // 让内置服务器直接返回静态文件
}
include __DIR__ . '/index.php';

然后这样启动:php -S localhost:8000 router.php

注意点:

DocumentRoot 配置错误(XAMPP/WAMP/MAMP 场景)

用集成环境却访问不到自己写的 PHP 文件,大概率是 DocumentRoot 指向了默认目录(如 C:/xampp/htdocs),而你的项目放在了桌面或其它位置。

改法分两步:

常见坑: 路径末尾不能漏掉斜杠,Windows 下路径要用正斜杠 / 或双反斜杠 \\,单反斜杠会解析失败。

.htaccess 重写规则干扰或缺失(尤其 Laravel / ThinkPHP 等框架)

框架项目本地 404,十有八九是 URL 重写没开或规则没生效。比如 Laravel 的 public/index.php 能直接访问,但 /users 就 404,说明 rewrite 模块没启用或 .htaccess 被忽略。

Apache 下检查项:

Nginx 用户则要手动配 try_files,例如 Laravel 的典型配置:

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

少这一行,所有非 PHP 脚本路径都会 404。

本地 404 表面是路径问题,实际常卡在服务层、路由层、重写层三层之间。最省时间的做法:先 curl 看响应头和状态码,再查 Web 服务日志(Apache 的 error.log,PHP 内置服务器的终端输出),比瞎改代码快得多。