【问题标题】:Codeigniter error log file shows errors, but app works fine without error msg on screen - why?Codeigniter 错误日志文件显示错误,但应用程序工作正常,屏幕上没有错误消息 - 为什么?
【发布时间】:2012-01-31 03:23:51
【问题描述】:

为什么codeigniter会在application/logs中显示错误如

ERROR - 2011-12-31 11:43:36 --> Severity: Warning  --> Invalid argument supplied for foreach() /var/www/example.com/htdocs/application/views/home/home_vw.php 53


ERROR - 2011-12-31 11:43:36 --> Severity: Notice  --> Undefined variable: questions /var/www/example.com/htdocs/application/views/home/home_vw.php 53

如果它们指向的方法工作正常 --- 并且屏幕上没有错误消息?

我的 index.php 设置在

error_reporting(E_ALL);

和配置

$config['log_threshold'] = 1;

关于这种行为的原因有什么想法吗?

【问题讨论】:

  • PHP 可能配置为关闭 display_errors 并打开 log_errors。这通常被认为是生产服务器的最佳实践。
  • 但是 CI 说一个变量是未定义的——实际上它已经定义并在前端正确显示了怎么办?
  • 变量为空与未定义不同。在这两种情况下,它们都会在输出中显示为空字符串,但前者会触发 E_NOTICE 消息。您看不到它们的事实纯粹是由于 display_errors 关闭,而不是因为它们没有发生。
  • 也许您可以添加控制器并查看问题...
  • 感谢@GordonM 的洞察力-但我的问题是 var_dump 和 print_r 用于 CI 标签为未定义/无效的变量/参数实际上返回为非空或未定义-所以我现在不知道该做什么为了在不影响实际错误记录的情况下阻止这种记录的发生,有什么建议吗?

标签: php codeigniter logging error-handling


【解决方案1】:

提到的错误是WarningNotice,这些不是阻止脚本进一步执行的致命错误。所以你有概率:

1.您的页面正在重定向到其他页面,因此此错误警告会在打印之前消失。

2. 警告已打印,但您看不到它,当它在 HTML cmets 中打印或在任何 div 后面时可能会发生,请尝试 view-source 到在这种情况下检测。

3.当您使用@ sign 抑制错误时也会发生这种情况。

【讨论】:

    猜你喜欢
    • 2015-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-06
    相关资源
    最近更新 更多