入口文件 index.php 中 APP_PATH 路径写死或使用相对路径导致 500 错误,应统一用绝对路径定义;public 目录未设为 Web 根目录会导致路由失效;runtime 目录权限不足引发日志与缓存失败;数据库配置 hostname 用 localhost 可能导致连接超时,需改用 127.0.0.1。
入口文件 index.
php
里
路径写死导致 500 错误
本地开发时习惯把
写成
,但服务器部署后如果项目不在 Web 根目录下(比如放在
,而 Web 入口是
),这个相对路径会错位,
加载不到核心文件,直接报 PHP Fatal error 或空白页。
实操建议:
立即学习
“
PHP免费学习笔记(深入)
”;
统一用绝对路径定义
,例如:
(
是 ThinkPHP 提供的目录分隔符常量,比硬写
更安全)
检查
中
的框架入口路径是否与服务器实际目录结构匹配,常见错误是漏掉
前的
目录层级
上线前在服务器上执行
确认当前脚本所在位置,再反推
是否指向真实
目录
public 目录没设为 Web 服务器根目录,静态资源 404 或路由失效
ThinkPHP 5+ 强制要求 Web 服务器(Nginx/Apache)的根目录必须指向
,否则
或 Nginx 的
规则不生效,所有 URL 都会绕过路由,直接返回 404 或暴露敏感文件。
实操建议:
立即学习
“
PHP免费学习笔记(深入)
”;
Nginx 配置中确认
指向的是
,不是项目根目录
Apache 下确保
已开启,且
文件未被服务器忽略(部分主机商会禁用
)
测试方法:访问
,能正常响应说明入口通;再访问
,若返回首页说明伪静态已生效
application 和 runtime 目录权限不足,日志写入失败或缓存无法生成
服务器上 PHP 进程用户(如
、
或
)对
目录没有写权限,会导致
、
、
子目录创建失败,报错类似
或
。
PHP 8.5.5
PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。
下载
实操建议:
立即学习
“
PHP免费学习笔记(深入)
”;
给
目录赋 755(Linux):
,必要时改属组:
不要给
目录写权限(除非开发期需要自动生成配置),生产环境保持 644 即可
检查 SELinux 是否启用(CentOS/RHEL),临时关闭验证:
;若问题消失,需用
重标上下文
数据库配置里的
用
导致连接超时
很多 Linux 服务器上,
会让 MySQL 客户端走 Unix socket 连接,而生产环境数据库可能跑在 Docker、远程主机或开启了 TCP-only 模式,这时必须显式指定
才能走 TCP 协议。
实操建议:
立即学习
“
PHP免费学习笔记(深入)
”;
把数据库配置中的
改成
如果数据库在另一台机器,确认防火墙放行了 MySQL 端口(默认 3306),且 MySQL 用户授权允许远程连接(
)
用命令行快速验证:
,能连上才说明 PHP 也能连
ThinkPHP 切换环境最常卡住的地方,往往不是代码逻辑,而是路径和权限这两层“看不见的依赖”——它们在本地因开发工具或集成环境自动兜底,一到服务器就立刻暴露。多花两分钟确认
的实际解析结果、Web 根目录的真实路径、以及 PHP 进程对 runtime 的操作权限,比反复刷新 500 页面快得多。
define('APP_PATH')APP_PATH__DIR__ . '/../application/'/home/wwwroot/myapp//home/wwwroot/myapp/public/requireAPP_PATHdefine('APP_PATH', dirname(__DIR__) . DS . 'application' . DS);DS'/'index.phprequirethinkphp/start.phpthinkphp/php -r "echo dirname(__DIR__);"APP_PATHapplicationpublic.htaccesstry_filesroot/path/to/your/project/publicAllowOverride All.htaccessmod_rewritehttp://yourdomain.com/index.php?s=index/indexhttp://yourdomain.com/www-datanginxapacheruntimeCacheLogTempmkdir(): Permission deniedFailed to open stream: Permission deniedruntimechmod -R 755 runtimechown -R :www-data runtimeapplicationsetenforce 0chconhostnamelocalhostlocalhost127.0.0.1'hostname' => 'localhost''hostname' => '127.0.0.1'GRANT ... ON *.* TO 'user'@'%'mysql -h 127.0.0.1 -u your_user -p your_dbAPP_PATH