网站500不知道从哪查?把error_log喂给AI,三步定位PHP报错

来源:互联网 时间:2026-09-01

网站突然白屏或者返回500,第一反应是去查日志。打开error_log一看,几十行报错堆在一起,又是Undefined array key又是Call to undefined function,还有个Fatal error混在里面。看不懂,也不敢动,只能截图发群里问人。

其实排查逻辑很简单,就三步:找到日志、挑出致命错误、连同相关代码一起问AI。很多人卡在第二步——把整段日志原样丢给AI,信息太杂,AI给出的答案也含糊。你得先自己把关键行拎出来。

第一步确认日志开没开、开在哪。php.ini里这几个配置决定了报错去向:display_errors线上必须关,log_errors必须开,error_log指定文件路径。很多“白屏”就是display_errors关了、log_errors没开,报错全丢进黑洞,当然什么都查不到。

; php.ini 生产环境推荐配置
log_errors = On
display_errors = Off
error_log = /var/log/php_errors.log
error_reporting = E_ALL
expose_php = Off

# 实时看最新报错
tail -f /var/log/php_errors.log
# 只筛Fatal级别的
grep -i "fatal" /var/log/php_errors.log | tail -20

第二步,从日志里挑出最要紧的那条。同一批报错往往有因果关系:前面的Warning可能只是噪音,最后那个Fatal error才是崩掉的原因。把Fatal error那一行、它前后两三行上下文、以及报错里提到的那个文件的对应代码片段,一起准备好。

第三步才是用AI。给AI的提示词也有讲究:把日志行、相关代码、你期望的结果说清楚,AI才能给准。别只丢一句“帮我看看这个报错”,那等于让AI猜你的代码意图。

我有一段PHP代码报错,请帮我定位原因并给出修复方案:

【报错日志】

PHP Fatal error:  Uncaught TypeError:  mysqli_fetch_assoc():

Argument #1 ($result) must be of type mysqli_result, bool given

in /var/www/site/list.php on line 42

【相关代码第38-45行】

$sql = "SELECT * FROM news WHERE cid=" . $_GET['cid'];

$result = $db->query($sql);

while ($row = mysqli_fetch_assoc($result)) {

echo $row['title'];

}

【问题】

请指出错误原因,并给出修复后的代码(要求防SQL注入)

这类“bool given”十有八九是SQL执行失败返回了false,而失败原因往往是拼接了非法参数。AI给出的修复方案大概率会提到参数化查询——这正好,你顺手就把注入漏洞堵上了。修完再用tail -f盯一会儿日志,确认同样的错误不再出现,才算闭环。

数据来源:PHP官方手册

相关文章

标签:

A5创业网 版权所有

返回顶部