error.log 是定位 PHP 500 错误的第一手证据,需重点搜索 PHP Parse error、Fatal error 和内存耗尽等关键词,并核对时间戳、display_errors 生效状态、扩展启用情况及文件权限。
看
里有没有
或
500 错误不是服务器宕了,而是 PHP 进程在执行时被硬性中断——要么根本没跑起来,要么代码当场炸了。
是第一手证据,90% 的问题靠它就能定性。
进宝塔 → 网站 → 选站点 → 日志 → 错误日志,打开最新
重点搜三类关键词:
(语法错)、
(致命错误)、
(内存爆了)
如果看到
,说明 PHP 进程压根没输出就退出了,大概率是扩展缺失或
没起来,不是代码问题
注意时间戳:必须和你刷新页面的时间一致,否则日志是旧的,查了也白查
确认
是否真生效
线上默认关掉错误显示,所以只看到 500,看不到具体哪行炸了。临时打开能直接在浏览器里看到错误详情,比翻日志还快,但必须确保它真的起作用。
改网站根目录下的
,把
改成
,同时确认
如果用了自定义
或 Nginx 配置里写了
,它会覆盖
,得一并检查
改完必须重启 PHP(不是重载),否则无效;定位完立刻关掉,避免泄露路径或敏感信息
检查 PHP 扩展和禁用函数是否匹配程序需求
换 PHP 版本、装新插件、升级 Laravel/WordPress 后突然 500,八成不是代码问题,是扩展没跟上或关键函数被禁用了。
PHP 8.5.5
PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。
下载
Laravel 10 要求
、
、
全启用;Typecho 在 PHP 8.0+ 下没开
,上传头像就 500
进宝塔 → 软件商店 → 找对应 PHP 版本 → 设置 → 安装扩展,把基础项全勾上;再进“禁用函数”,把
、
等按需放开
SSH 进入对应 PHP
目录,运行
,核对是否真加载了
别忽略文件权限和
限制
文件属主不对、目录不可写、跨目录访问被拦,都会导致 PHP 在读配置、写日志、生成缓存时失败,最终返回 500。
立即学习
“
PHP免费学习笔记(深入)
”;
确认 Web 服务运行用户(通常是
),执行
对
、
、
等可写目录单独授权:
如果站点要包含外部配置或调用公共类库,检查“防跨站攻击(
)”设置,手动添加允许路径,比如
复杂点往往藏在“看似正常”的地方:日志空、
改了却没效果、扩展明明勾了却没加载——这时候得一层层剥,别跳步。
error.logPHP Parse errorFatal errorerror.log域名.error.logPHP Parse errorPHP Fatal errorAllowed memory size exhaustedPremature end of script headersphp-fpmdisplay_errors = On.user.inidisplay_errors = OffOnerror_reporting = E_ALLphp.inifastcgi_param PHP_VALUE.user.inimbstringopensslpdo_mysqlgdexecshell_execbin/www/server/php/82/bin/php -m | grep -E "(mbstring|openssl|pdo)"open_basedirwwwchown -R www:www /www/wwwroot/your-site.comruntimestoragelogsfind . -type d \( -name "runtime" -o -name "storage" \) -exec chmod 755 {} \;open_basedir/www/wwwroot/common:/tmpdisplay_errors