商城首页欢迎来到中国正版软件门户

您的位置:首页 >PHP 404 错误原因及正确启动方法

PHP 404 错误原因及正确启动方法

  发布于2026-02-15 阅读(0)

扫一扫,手机访问

PHP 内置<a href=服务器 404 错误的根源与正确启动路径解析 " />

PHP 内置开发服务器(php -S)返回 404 的根本原因,是请求的文件路径未落在当前工作目录下——该命令仅提供静态路由映射,不支持自动目录遍历或项目根目录推断

PHP 自带的内置 Web 服务器(php -S)是一个轻量级、无配置的开发工具,适用于快速测试 PHP 脚本,但它对文件路径极为严格:它只从你执行命令时所在的当前工作目录(current working directory)中查找并响应请求。这意味着,无论你的项目结构多么复杂(如 Laravel 的 public/ 入口、Vue 的 dist/ 目录或自定义的 src/),你都必须确保 php -S 命令在实际可访问资源所在的目录中运行。

例如,假设你的项目结构如下:

/project
├── composer.json
├── app/
├── public/         ← 实际 Web 入口(含 index.php)
│   ├── index.php
│   └── assets/
└── src/            ← 另一个可能存放脚本的目录
    └── demo.php
  • ❌ 错误做法:在 /project 根目录下执行

    cd /project
    php -S localhost:8888

    此时访问 http://localhost:8888/index.php 会 404 —— 因为 index.php 并不在 /project 下,而是在 /project/public/ 中。

  • ✅ 正确做法:切换至 public/ 目录再启动

    cd /project/public
    php -S localhost:8888

    此时 index.php 位于当前目录,请求可被正常响应。

? 进阶提示:指定路由器脚本(推荐 Laravel 等框架使用)
对于需要 URL 重写(如 Laravel 的 index.php 统一入口)的项目,应配合路由器脚本启动:

cd /project/public
php -S localhost:8888 router.php

其中 router.php 示例(保存在 public/ 下):

<?php
// router.php
if (preg_match('/\.(?:png|jpg|jpeg|gif|css|js|ico|woff|woff2|ttf|eot|svg)$/', $_SERVER["REQUEST_URI"])) {
    return false; // 静态资源直接由服务器返回
} else {
    include __DIR__ . '/index.php'; // 所有其他请求交由 index.php 处理
}

⚠️ 常见误区与注意事项

  • 删除旧项目(如 Laravel)后出现 404,往往是因为你习惯性在原项目根目录运行命令,但新项目结构已变(如入口从根目录移到 public/),却未同步调整启动路径;
  • php -S 不读取 .htaccess、nginx.conf 或 php.ini 中的重写规则,一切路由逻辑需由 PHP 脚本显式控制;
  • 浏览器缓存或预加载可能导致“看似相同 URL 却行为异常”,建议测试时使用无痕窗口或清除缓存;
  • Windows 用户注意路径分隔符兼容性,但 cd 切换目录逻辑与 Unix 一致,重点仍是物理工作目录匹配资源位置

总结:解决 php -S 的 404 问题,核心就一句话——让终端当前路径(pwd / cd 结果)与浏览器所请求的 PHP 文件所在路径完全一致。养成执行前先 ls -l index.php 确认文件存在的习惯,可避免绝大多数路径类 404。

本文转载于:互联网 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注