Cron 作业没有给出所需的结果,但通过浏览器访问相同的文件会给出所需的结果


Cron job is not giving required result, but accessing same file through browser does

我需要运行一个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 

试试这个解决方案它会起作用,它比点击服务器对您的数据执行后台操作要好

我希望这有所帮助