我发现我的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调用。
答案 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
。