PHP错误写入错误日志

PHP错误写入错误日志,php,apache,ubuntu,cgi,Php,Apache,Ubuntu,Cgi,我的Linux服务器在Apache2上作为CGI运行PHP7。在php.ini中我有 error_log = /var/log/apache2/php.log 现在,我有两个问题: 1) 所有PHP错误都转到/var/log/apache2/error.log,而不是PHP.log。我编辑了右侧的php.ini,因为ini\u get('error\u log')返回php中php.log的完整路径 2) 当我试图在PHP中打开这些文件时,我的权限被拒绝。我已将这两个文件chmod'd发送到7

我的Linux服务器在Apache2上作为CGI运行PHP7。在
php.ini中
我有

error_log = /var/log/apache2/php.log
现在,我有两个问题:

1) 所有PHP错误都转到
/var/log/apache2/error.log
,而不是
PHP.log
。我编辑了右侧的
php.ini
,因为
ini\u get('error\u log')
返回php中
php.log
的完整路径

2) 当我试图在PHP中打开这些文件时,我的权限被拒绝。我已将这两个文件
chmod
'd发送到777,但PHP仍然无法访问它们

服务器已重新启动多次,因此将应用配置更改。我的Apache配置如下:

ErrorLog ${APACHE_LOG_DIR}/error.log

ScriptAlias /local-bin /usr/bin
AddHandler application/x-httpd-php7 php
Action application/x-httpd-php7 /local-bin/php-cgi7.0
<Directory "/usr/bin">
    Require all granted
    AllowOverride All
</Directory>
ErrorLog${APACHE\u LOG\u DIR}/error.LOG
脚本别名/本地bin/usr/bin
AddHandler应用程序/x-httpd-php7 php
动作应用程序/x-httpd-php7/local bin/php-cgi7.0
要求所有授权
允许超越所有

如何将PHP错误重定向到正确的文件,并使其对PHP可读?提前谢谢

您需要将日志目录和日志文件(如果已经存在)的
所有者
更改为
www-data

sudo chown -R www-data:www-data /path/to/log/directory
不要将目录权限更改为
777
,因为这可能会导致安全问题,请改用
775
。对于日志文件,请使用
664

您可能还希望将系统用户添加到组
www-data
,如果尚未成为成员(使用
groups
命令检查现有组),则需要重新启动系统,然后更改才能生效:

sudo adduser user www-data #change 'user' to your 

ErrorLog${APACHE\u LOG\u DIR}/error.LOG
更改为
ErrorLog${APACHE\u LOG\u DIR}/php.LOG
?对文件进行编码通常是不够的。您必须具有访问所有父/容器目录的权限。如果文件位于锁定的vault中,则授予其访问权限是毫无意义的。日志文件是在apache仍以root用户身份运行时创建的,因此这些文件归root用户所有。一旦你尝试用php访问这些文件,apache就不再是root用户,php也没有这些文件的权限。好的,回到基础!这确实是父目录的权限问题。现在我觉得很尴尬:)谢谢!你知道,当你来自Windows世界并且熟悉NTFS时,很容易在这类东西上绊倒。我忘记了每个父目录都需要执行权限才能访问该文件。因此,最终我创建了
/var/log/php
chown
“将其发送到
根目录:www-data
chmod
”将其发送到
750
。然后我可以在这个文件夹中使用
php.log
。另外,我暂时将权限更改为
777
,不用担心:)