You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决PHP错误日志被截断问题(WordPress+Apache环境)

WordPress错误日志截断并重复的问题排查与解决

问题描述

WordPress产生的错误写入Apache服务器错误日志时被截断,关键内容无法查看。调大php_admin_value[log_errors_max_len](当前为8000)后,单条日志中多次出现相同的截断内容,且参数值越大,重复次数越多,无法确定是WordPress、PHP还是Apache哪一层导致该问题。

日志示例

[Sat Oct 28 14:29:10.875915 2023] [proxy_fcgi:error] [pid 20448:tid 140469874956032] [client 37.191.54.101:0] AH01071: Got error 'PHP message: modified_date was called incorrectly. Order properties should not be accessed directly. Backtrace: require('wp-blog-header.php'), requir
e_once('wp-includes/template-loader.php'), do_action('template_redirect'), WP_Hook->do_action, WP_Hook->apply_filters, WC_AJAX::do_wc_ajax, do_action('wc_ajax_checkout'), WP_Hook->do_action, WP_Hook->apply_filters, WC_AJAX::checkout, WC_Checkout->process_checkout, WC_Checkout->p
rocess_order_without_payment, WC_Order->payment_complete, do_action('woocommerce_payment_complete'), WP_Hook->do_action, WP_Hook->apply_filters, WooCommerce_Simba_PrintOrders_1_0->woocommerce_payment_complete, WooCommerce_Simba_PrintOrders_1_0->print_order_or_schedule, WooCommer
ce_Simba_PrintOrders_1_0->print_go, WooCommerce_Simba_PrintOrders_1_0->woocommerce_process_order, WooCommerce_Simba_PrintOrders_Sources_1_0->getdocument_woocommerce_pips_packing_slip, WooCommerce_Simba_PrintOrders_Sources_1_0->_pips_generate_output, WPO\WC\PDF_Invoices\Docume
ts\Order_Document->get_pdf, ...PHP message: modified_date was called incorrectly. Order properties should not be accessed directly. Backtrace: require('wp-blog-header.php'), require_once('wp-includes/template-loader.php'), do_action('template_redirect'), WP_Hook->do_action, WP
_Hook->apply_filters, WC_AJAX::do_wc_ajax, do_action('wc_ajax_checkout'), WP_Hook->do_action, WP_Hook->apply_filters, WC_AJAX::checkout, WC_Checkout->process_checkout, WC_Checkout->process_order_without_payment, WC_Order->payment_complete, do_action('woocommerce_payment_complete
'), WP_Hook->do_action, WP_Hook->apply_filters, WooCommerce_Simba_PrintOrders_1_0->woocommerce_payment_complete, WooCommerce_Simba_PrintOrders_1_0->print_order_or_schedule, WooCommerce_Simba_PrintOrders_1_0->print_go, WooCommerce_Simba_PrintOrders_1_0->woocommerce_process_order,
 WooCommerce_Simba_PrintOrders_Sources_1_0->getdocument_woocommerce_pips_packing_slip, WooCommerce_Simba_PrintOrders_Sources_1_0->_pips_generate_output, WPO\WC\PDF_Invoices\Documents\Order_Document->get_pdf, ...', referer: https://beadingschool.com/checkout/

问题根源

这种现象的核心原因是PHP的日志分段机制:log_errors_max_len控制PHP单条日志的最大输出长度,当错误信息(尤其是包含长调用回溯栈的内容)超过该阈值时,PHP会将日志拆分为多个分段发送给Apache。而Apache在接收FastCGI传来的错误信息时,会把这些分段拼接成单条日志,从而出现重复的截断内容,且log_errors_max_len设置越大,拆分的分段数越多,重复次数也就越多。

解决步骤

  • 调整PHP日志参数:将log_errors_max_len设置为0(PHP 5.3及以上版本支持,代表不限制单条日志长度),可以在php.ini或Apache虚拟主机配置中添加:
    php_admin_value[log_errors_max_len] = 0
    
    修改后需重启PHP-FPM(如果使用)和Apache服务使配置生效。
  • 排查WordPress插件干扰:部分日志类插件可能会干预错误输出逻辑,可临时禁用非必要插件验证是否恢复正常;从日志回溯来看,错误由WooCommerce相关插件触发,可重点检查该插件的错误处理逻辑。
  • 验证Apache日志配置:确保Apache的ErrorLog未设置截断相关参数,LogLevel保持在warn或error级别,避免过高级别过滤日志内容;同时检查是否有mod_security等模块拦截或截断日志。
  • 临时调试方案:若不想全局修改配置,可在触发错误的代码位置(如modified_date调用处)手动输出完整回溯栈:
    error_log(print_r(debug_backtrace(), true));
    
    该方法可绕过PHP默认的日志截断限制,获取完整错误信息。

内容的提问来源于stack exchange,提问作者Adam Sandor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 15:17:35