2016-03-01 118 views
4

在这么多年来,我第一个PHP脚本,我想记录一个错误:PHP无法写入错误日志 - 权限被拒绝

error_log("my error message", 3, $error_log); 

我得到的一般Apache的错误错误日志:

PHP Warning: error_log(/var/log/apache2/my_php_errors.log): failed to open stream: Permission denied in /var/www/html/blahblah/my_script.php on line 88

这是我已经检查并尝试:

  • 创建$error_log用相同的所有权(root.adm)和烫发issions(640)作为Apache错误日志。
  • 将所有者更改为www-data,这是PHP正在运行的用户。
  • log_errorsOn
  • open_basedir没有设置。
  • 使用PHP 5.5.x,所以安全模式不存在。

我错过了什么?

编辑:它能够写入一般的Apache错误日志。神秘的原因是它无法以相同的所有权和权限写入同一目录中的另一个文件。

编辑2:另一个开发人员告诉我,这对他的WAMP有效,所以它是我的LAMP堆栈或配置特有的东西。

+2

我们需要更多关于'$ error_log'变量的信息。它是日志文件的目的地。对于默认日志文件保留为空。例如,它位于Web根目录之内还是之外。如果在外面,你可能想检查ini中允许的包含路径。 – Xorifelse

+0

联系您的服务器管理员。 – frosty

+1

尝试使用777来编写PHP需要写入的文件,并查看它是否可行 – Machavity

回答

0

我有同样的问题。 https://serverfault.com/questions/831444/php-error-log-per-vhost/831666#831666

touch /path/to/php_error.log 
chown www-data:www-data php_error.log 
chmod 755 php_error.log 

感谢领导给我的答案!

+0

这似乎不像它会在我的情况下工作,因为我试图将所有者设置为“www-data”和更广泛的'777'的权限。不幸的是,我无法再访问我遇到这个问题的环境。 –

+0

PHP(或apache2)需要能够在目录中创建和写入文件。我把日志文件放在html目录中没有问题,但我不想在public viewable目录中使用error_log文件...另外,我不想扩大虚拟服务器根目录的范围..所以我创建了根文件(触摸),然后在文件上为它设置更广泛的权限。 –