【发布时间】:2016-03-01 19:30:50
【问题描述】:
在我多年以来的第一个 PHP 脚本中,我试图记录一个错误:
error_log("my error message", 3, $error_log);
我在常规 Apache 错误日志中遇到错误:
PHP 警告:error_log(/var/log/apache2/my_php_errors.log):无法打开流:第 88 行 /var/www/html/blahblah/my_script.php 中的权限被拒绝
这是我检查并尝试过的:
- 创建的
$error_log与 Apache 错误日志具有相同的所有权 (root.adm) 和权限 (640)。 - 将所有者更改为
www-data,这是运行 PHP 的用户。 -
log_errors是On。 -
open_basedir未设置。 - 使用 PHP 5.5.x,所以不存在安全模式。
我错过了什么?
编辑:它能够写入一般的 Apache 错误日志。奥秘在于为什么它不能写入同一目录中具有相同所有权和权限的另一个文件。
编辑 2:另一位开发人员告诉我,这适用于他的 WAMP,因此它是特定于我的 LAMP 堆栈或配置的。
【问题讨论】:
-
我们需要更多关于
$error_log变量的信息。它是日志文件的目的地。将其留空以获得默认日志文件。例如,它是在 web 根目录中还是之外。如果在外部,您可能需要检查 ini 中允许的包含路径。 -
尝试对 PHP 需要写入的文件使用 777 看看是否可行
-
@frosty 我是我自己的服务器管理员。
-
另外,确保 selinux 被禁用。人们总是忘记那个
-
@Xorifelse 我已经描述了如何更改该文件的权限。无论如何,我为什么希望它是可执行的?
标签: php