我创建了一个简单的PHP脚本,由我的远程网络服务器上的CRON守护程序执行。每隔几分钟,脚本会在另一个网站上查找一些JSON数据,并将结果存储在与自身相同的文件夹中的文件中。
但是,似乎在浏览器中导航到页面时使用的文件使用的文件与执行cron时的文件不同。
换句话说:去这里时:
www.example.com/cronscripts/my_script.php
使用了文件/home/user_xxx/domains/example.com/public_html/cronscripts/datafile.json
。
但是,使用以下cron语句调用脚本时:
/usr/local/bin/php /home/user_xxx/domains/example.com/public_html/cronscripts/my_script.php
使用不同位置的文件。此文件是否位于Linux服务器的/ usr / local / bin / php文件夹中?如果是这样,我无法手动访问它,因为我只能访问/ home / user_xxx /文件夹。
有人可以告诉我使用Cronjobs时文件的最终位置吗?
答案 0 :(得分:1)
这似乎是该位置的路径不匹配,您很可能在json
文件的某处使用相对路径。
我认为你应该安排你的cronjob如下,看看是否有效
* * * * * cd /home/user_xxx/domains/example.com/public_html/cronscripts && /usr/local/bin/php my_script.php
答案 1 :(得分:0)
您应该使用服务器上脚本的绝对路径,即/var/www/script.php
尝试改为使用
* / 1 * * * * php /home/user_xxx/domains/example.com/public_html/cronscripts/my_script.php
答案 2 :(得分:0)
使用chdir()
确保您从正确的目录开始也可以提供帮助。
答案 3 :(得分:-1)
请注意:请始终使用#!/ bin / env php (有关详细信息,请参阅http://seancoates.com/blogs/use-env)