【发布时间】:2015-04-04 11:12:43
【问题描述】:
我正在尝试在用户 apache 下创建一个 cronjob,但我收到程序访问的文件的权限被拒绝错误。我的 php 脚本无法访问的特定文件是 /var/www/html/amazon/amazon_data.txt。这是我检查权限,并测试是否可以写入文件:
bash-3.2$ whoami
apache
bash-3.2$ ls -l /var/www/html/amazon/amazon_data.txt
-rwxrwxr-- 1 apache apache 1082 Apr 3 15:43 /var/www/html/amazon/amazon_data.txt
bash-3.2$ vi /var/www/html/amazon/amazon_data.txt
现在我尝试运行一个脚本来尝试访问我收到此警告的文件:
bash-3.2$ /usr/bin/php /var/www/html/amazon/amazon_inventory_sync.php
PHP Warning: Module 'json' already loaded in Unknown on line 0
PHP Warning: fopen(amazon_data.txt): failed to open stream: Permission denied in /var/www/html/amazon/amazon_inventory_sync.php on line 26
Warning: fopen(amazon_data.txt): failed to open stream: Permission denied in /var/www/html/amazon/amazon_inventory_sync.php on line 26
Unable to open amazon_data.txt!bash-3.2$
为什么我可以用用户访问和编辑文件就好了,但在通过命令行执行时不能在 php 脚本中?从浏览器运行脚本时没有问题。
编辑:我可以在 apache 组中的用户 soh 下正常运行它。 apache 也属于 apache 组。
【问题讨论】:
-
脚本分配给谁?
-
脚本分配给apache
-
文件第 26 行发生了什么?
-
好的,谢谢! cron 工作有效,只是不能从命令行工作,我猜这是可以接受的。我能够通过每分钟运行一次并输出日志来解决我遇到的问题,该问题仅在执行 cron 作业时出现。
-
对于命令行,也许你已经将它作为 sudo 运行了?无论如何,很高兴它正在工作