我把问题缩小了一些。
当我从命令行运行"error_log('hey');"
时,它会转储到STDOUT。但是,如果我从我的Web界面(Apache)运行相同的代码,它会将错误放在错误日志中。
我检查了两个ini文件,一个是Apache正在使用的文件,另一个是/ private / etc(我在运行MAMP的Mac上)。两个error_log变量都指向完全相同的位置。
当我跑步时
echo ini_get('error_log');
命令行中的值与浏览器中的值相同。 这里错误配置了什么ini设置?这非常烦人,因为不仅仅是错误记录被破坏了。它也影响了我的包含路径:/
答案 0 :(得分:1)
你想要完成什么?在apache中,stderr进入error_log
... error_log()
function documentation状态,默认情况下它会记录到服务器的错误日志中。如果您要登录其他目的地,请使用message_type
和destination
参数。
答案 1 :(得分:0)
您可能需要编辑以下配置文件:
/Applications/MAMP/conf/php5/php.ini
MAMP使用它自己的Apache服务器,默认情况下在端口8080上运行。您可能希望在系统偏好设置 - >中关闭Apache服务器。共享。
另外,尝试运行包含以下内容的PHP文件:
<?php phpinfo(); ?>
这将告诉你Apache实际上正在读取哪个php.ini。
威尔
答案 2 :(得分:0)
此处的相关ini设置为display_errors
。
从命令行,On
的值会将错误转储到STDOUT
; stderr
会将他们转移到STDERR,而Off
会压制他们。对于Apache,只有On
和Off
才有意义。
可能性是Apache的ini文件有display_errors = Off
而/ private / etc中的文件有display_errors = On
。
error_log
指令告诉PHP将错误记录到哪里,但它也需要将log_errors
设置为On
,否则它无效。 (同样,/ private / etc中的ini文件可能有log_errors = Off
。)
答案 3 :(得分:0)
在控制台中而不是在日志文件中显示error_log的原因可能是由于权限问题 - 我真的不知道MacOS,但由于它是基于UNIX的,我猜测:< / p>
如果它不能登录到日志文件,我想是error_log中被书面方式到标准输出为错误(错误),其通常是控制台。
手册页面上的This comment似乎表明这可能是导致问题的原因(引用):
似乎PHP会记录到stderr 无法写入日志文件。命令 PHP回归到stderr,因为 日志文件(通常)只是 可以通过网络服务器编写。
另外,请确保在CLI中使用的php.ini文件中正确配置了log_errors
和display_errors
:
log_errors 布尔
判断脚本是否有错误消息 应记录到服务器的错误 log或error_log。因此,这个选项 服务器特定的。
并且:
display_errors string
这决定了错误是否应该 作为一部分打印到屏幕上 输出或是否应隐藏它们 来自用户。
值“stderr”将错误发送给 stderr而不是stdout。