php.ini配置错误

时间:2009-08-31 20:09:39

标签: php configuration ini

我把问题缩小了一些。 当我从命令行运行"error_log('hey');"时,它会转储到STDOUT。但是,如果我从我的Web界面(Apache)运行相同的代码,它会将错误放在错误日志中。 我检查了两个ini文件,一个是Apache正在使用的文件,另一个是/ private / etc(我在运行MAMP的Mac上)。两个error_log变量都指向完全相同的位置。 当我跑步时

echo ini_get('error_log');

命令行中的值与浏览器中的值相同。 这里错误配置了什么ini设置?这非常烦人,因为不仅仅是错误记录被破坏了。它也影响了我的包含路径:/

4 个答案:

答案 0 :(得分:1)

你想要完成什么?在apache中,stderr进入error_log ... error_log() function documentation状态,默认情况下它会记录到服务器的错误日志中。如果您要登录其他目的地,请使用message_typedestination参数。

答案 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,只有OnOff才有意义。

可能性是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>

  • Apache使用的日志文件属于特定用户
  • 从控制台运行脚本时,您不是该用户,并且您没有对日志文件的写入权限

如果它不能登录到日志文件,我想是error_log中被书面方式到标准输出为错误(错误),其通常是控制台。


手册页面上的This comment似乎表明这可能是导致问题的原因(引用):

  

似乎PHP会记录到stderr   无法写入日志文件。命令   PHP回归到stderr,因为   日志文件(通常)只是   可以通过网络服务器编写。


另外,请确保在CLI中使用的php.ini文件中正确配置了log_errorsdisplay_errors

  

log_errors 布尔

     

判断脚本是否有错误消息   应记录到服务器的错误   log或error_log。因此,这个选项   服务器特定的。

并且:

  

display_errors string

     

这决定了错误是否应该   作为一部分打印到屏幕上   输出或是否应隐藏它们   来自用户。

     

值“stderr”将错误发送给   stderr而不是stdout。