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

Fab*_*cci 3 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 根根 4096 15 前 16.20 。

如果我反过来执行:

sudo touch /var/log/loadRome.log

我没有收到任何错误。

可能是什么问题?

请注意 Apache 没有受到威胁:我从根 crontab 和使用 sudo 从 shell 调用这些脚本作为测试。

han*_*rik 5

最佳猜测:运行 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 递归地为您提供所有这些文件夹的详细权限信息。