thinkphp5访问404或白屏主因是web根目录未设为public/、apache未启mod_rewrite/nginx重写缺失、php缺pdo_mysql/mbstring扩展,而非安装失败;需确保服务器指向tp5/public/并正确配置路由。

直接用 composer create-project 装出来的 ThinkPHP5 项目,90% 的人卡在「访问 404」或「白屏不报错」——根本不是框架没装好,而是入口路径、Web 服务器配置、或 PHP 扩展缺位导致的。
为什么 composer create-project topthink/think tp5 --prefer-dist 后打不开?
这条命令本身没问题,它会拉取最新稳定版(非 dev-master)并初始化完整目录结构。但问题出在后续环节:
- ThinkPHP5 的入口文件
index.php必须放在 Web 服务器的「根目录」下,而它实际位于tp5/public/内 —— 直接把整个tp5/放进www/或htdocs/是错的; - Apache/Nginx 默认不读取
.htaccess或未开启mod_rewrite,URL 路由失效,/index/index这类地址直接 404; - PHP 缺少
pdo_mysql或mbstring扩展(尤其 Windows 下 php.ini 常默认注释掉这些行),框架启动时静默失败,浏览器只显示空白; - Windows 用户用 phpStudy 或 XAMPP 时,站点根目录必须指向
tp5/public/,不是tp5/—— 这是最多人翻车的点。
php -S 内置服务器能绕过 Apache 配置吗?
能,但有严格限制:仅用于开发调试,不能用于生产,且必须指定路由文件。否则静态资源(CSS/JS)全 404。
- 进入
tp5/根目录后,运行:php -S 0.0.0.0:8000 public/router.php(注意是public/router.php,不是public/index.php); - 若提示
router.php不存在,说明你用的是早期 TP5.0.x 版本(如 5.0.10),需手动创建该文件,内容仅一行:<?php—— ThinkPHP 自动接管; - 浏览器访问
http://localhost:8000,而不是http://localhost:8000/public; - 此方式不支持 .htaccess 重写,所有 URL 必须带
index.php/前缀(如http://localhost:8000/index.php/index/index),除非你在router.php中手动处理。
数据库配置写在哪?database.php 还是 .env?
TP5.0.x 默认只认 config/database.php;TP5.1+ 开始支持 .env,但需确认是否启用环境变量加载。
- 检查
tp5/public/index.php是否包含:define('APP_ENV', 'local');和Dotenv\Dotenv::createImmutable(__DIR__.'/..')->load();—— 若无,则.env不生效; -
config/database.php中的'hostname'别写localhost,改用127.0.0.1,避免 MySQL 因 socket 连接失败; - 密码含特殊字符(如
@、/)时,database.php中必须用单引号包裹,并对字符 URL 编码(例如pass@word→pass%40word),否则 PDO 连接字符串解析错误; - 首次部署建议先注释掉
'deploy' => 1(如果存在),避免因缓存机制导致配置修改不生效。
最常被忽略的一点:TP5 的 runtime/ 目录必须可写,且不能被 Web 直接访问。Windows 下有时因权限继承问题,即使目录存在,log 或 cache 子目录仍无法生成 —— 此时看 php_error.log 才会发现 “failed to open stream: Permission denied”。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











