PHP升级后如何配置php.ini使错误日志显示完整SQL查询
如何让PHP错误日志完整记录SQL查询语句?
要解决错误日志中SQL查询被截断的问题,你可以通过调整php.ini里的两个关键配置项来实现:
调整异常追踪字符串长度:修改
zend.exception_string_max_len参数,它控制PHP在异常栈追踪中显示的字符串参数最大长度。默认值通常是1024,不足以容纳较长的SQL语句。你可以把它设为更大的数值,比如:zend.exception_string_max_len = 8192数值可以根据你的实际SQL长度调整,比如16384甚至更高,只要不超出服务器的合理资源范围。
调整单条日志最大长度:修改
log_errors_max_len参数,它限制了单条错误日志条目的字节数。如果这条值太小,即使完整的SQL能被捕获,整个日志条目也会被截断。建议设置为和上面参数相近的数值:log_errors_max_len = 8192
修改完这两个配置后,必须重启你的Web服务器(Apache、Nginx等),让配置生效。之后再触发相关错误时,错误日志里的SQL查询就会完整显示,不会再出现SELECT *,REPLAC...这类截断的情况。
另外,如果有部分场景还是无法完整记录,你也可以在代码层面做补充:比如在调用mysqli->query()之前,手动把SQL语句写入自定义日志,或者捕获查询异常时,单独输出完整SQL到日志文件。不过优先通过php.ini配置来全局解决问题会更高效。
内容的提问来源于stack exchange,提问作者Shane
相关产品推荐
相关产品推荐

