从php脚本登录/ var / log时,权限被拒绝

时间:2017-08-15 16:31:59

标签: php bash logging centos

我发现我的crontab脚本无法按预期工作,因为它们无法写入/ var / log。我尝试执行命令:

  

sudo / usr / bin / php /var/www/html/iPhone/inarrivo/php/rome/process.php>>   /var/log/romeLoading.log 2>& 1

手工得到:

  

-bash:/var/log/romeLoading.log:拒绝权限

/ var / log权限是:

  

drwxr-XR-X。 13 root root 4096 15 ago 16.20。

如果我反过来执行:

  

sudo touch /var/log/loadRome.log

我没有得到任何错误。

可能是什么问题?

请注意Apache没有利害关系:我从root crontab调用这些脚本,并使用sudo作为测试从shell调用。

2 个答案:

答案 0 :(得分:1)

最佳猜测:运行shell的用户没有/var/log/romeLoading.log的写访问权限,而stdout重定向(>>)由shell用户重定向,而不是sudo用户,因此访问权限在>>上被拒绝,但不是sudo touch。也许试试

sudo sh -c '/usr/bin/php /var/www/html/iPhone/inarrivo/php/rome/process.php >> /var/log/romeLoading.log 2>&1'

应该以root身份运行sh,并让root-sh使用root权限进行重定向。虽然未经测试。

下次要发布调试权限时,发布namei -l path/to/file输出,它提供的信息比调试权限问题时说明单个文件本身要多得多,因为问题可能比文件本身更高,就像它所在的文件夹,或者它所在的文件夹所在的文件夹等等,而namei以递归方式为您提供有关所有文件夹的详细权限信息。

答案 1 :(得分:0)

这是一个权限问题,因为日志文件属于root用户,而apache运行www-data。试试chown www-data:www-data /var/log/loadRome.log