我有一些PHP代码,在浏览器中运行正常,但现在我想使用相同的代码,并执行它从一个cron脚本我得到的问题。
我试过命令在cron wget -O /dev/null http://www.mydomain.com/test.php但如果我尝试在terminal,我得到下面的错误。
什么是从cron运行一个PHP文件正确的命令? 我需要添加额外的代码行到我的PHP文件的顶部?
我得到的问题是
-bash-3.2$ wget -O /dev/null http://www.mydomain.com/test.php --2012-04-08 15:59:41-- http://www.mydomain.com/test.php Resolving www.mydomain.com... 46.***.***.1 Connecting to www.mydomain.com|46.***.***.1|:80... connected. HTTP request sent, awaiting response... 403 Forbidden 2012-04-08 15:59:41 ERROR 403: Forbidden.
我给了文件755权限,甚至777权限,但不能看到我做错了什么。
您的networking服务器未configuration为允许访问您尝试下载的文件。 在您尝试从cron运行此下载之前,您需要先解决这个问题。
首先,弄清楚你的networking服务器是如何configuration的。 如果你使用的是Apache,你应该可以find/etc/apache/httpd.conf或/etc/apache2/httpd.conf或类似的东西。 该文件应该指出你的networking服务器是如何设置的。
其次,检查你的错误日志。 这应该是像/var/log/apache/error.log 。 该文件应该提供关于wget为什么失败的更多信息。
debugging该问题。 一旦你得到了wget的工作,你可以尝试在cron中运行它。
你也可以尝试使用curl而不是wget。 像这样的东西:
curl -s http://www.mydomain.com/test.php >/dev/null
应该也能正常工作。 在这种情况下,我没有强烈的理由去selectwget或curl。
可能没有理由通过networking服务器/客户端请求运行它,这样做会增加不必要的复杂性。 除非PHP脚本需要Web服务器环境(例如$ _SERVER或$ _REQUEST),否则最好直接运行它。
要从cron直接运行PHP脚本:
1 * * * * /usr/bin/php /path/to/your/php/script.php