我需要运行一个php script
来生成snapshots
,使用crone job
的一些网站CutyCapt
,我从数据库中获取网站的地址,然后在生成屏幕截图后删除此记录。我用了*/5 * * * * /usr/bin/php -f /path/generate.php
它对crone job
不起作用,但是如果我使用browser
访问同一个文件,它可以正常工作,如果使用command line
的命令php
运行此脚本,它也可以正常工作。然后我只是创建了另一个文件并使用 file_get_contents
访问了 URL;添加了此文件crone job
它工作了几天,但现在这种方法也不起作用。我不知道发生了什么。我没有更改任何这些文件。我还尝试wget
命令来访问该网址,但未能获得所需的输出。我的 crontab 现在看起来像这样 */5 * * * * wget "http://www.mysite.com/generate.php" -O /dev/null
奇怪的是crone作业执行得很好,它从数据库中获取数据并删除记录,但不更新图像。
权限或类似问题是否存在任何问题,阻止它使用 crone 作业生成图像,但在使用浏览器访问时无法生成图像。
请帮助我被困住了。
我不知道你的脚本在内部做什么,但请记住,用户的 cron 作业不会继承用户环境。因此,如果您的 php 脚本正在运行任何 shell 命令,您可能会遇到 PATH 问题。
如果您从脚本运行 shell 命令,请尝试从 php 脚本中设置 PATH 环境变量,看看是否有帮助。
页面上是否有任何用户信任,例如基本身份验证?如果是这样,您必须在 wget 请求中定义用户名和密码,例如
wget --http-user=user --http-password=password "http://url" ?
并通过从 PHP 命令行运行 YOR 脚本来尝试另一种解决方案所以你的 crontab 可能看起来像
*/5 * * * * /usr/bin/php -f /path/to/generate.php
试试这个解决方案它会起作用,它比点击服务器对您的数据执行后台操作要好
我希望这有所帮助