cron 出现 403 禁止错误

cron 出现 403 禁止错误

我有一些在浏览器中运行良好的 php 代码,但现在我想使用相同的代码并从 cron 脚本执行它,但我遇到了问题。

我尝试在 cron 上执行该命令 wget -O /dev/null http://www.mydomain.com/test.php ,但如果我在终端中尝试该命令,则会收到以下错误。

从 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 权限,但却看不出我做错了什么。

答案1

您的网络服务器未配置为允许访问您尝试下载的文件。您需要先解决该问题,然后再尝试从 cron 运行此下载。

首先,弄清楚您的网络服务器是如何配置的。如果您使用的是 Apache,您应该能够找到/etc/apache/httpd.conf/etc/apache2/httpd.conf类似的。该文件应该会告诉您您的网络服务器是如何设置的。

其次,检查错误日志。它应该是这样的/var/log/apache/error.log。该文件应该提供有关 wget 失败原因的其他信息。

调试该问题。一旦 wget 工作正常,您就可以尝试在 cron 中运行它。

您也可以尝试使用 curl 代替 wget。如下所示:

curl -s http://www.mydomain.com/test.php >/dev/null

应该也能正常工作。在这种情况下,我没有强烈的理由更喜欢 wget 或 curl。

答案2

可能没有理由通过 Web 服务器/客户端请求来运行它,这样做会增加不必要的复杂性。除非 PHP 脚本需要 Web 服务器环境(例如 $_SERVER 或 $_REQUEST ),否则最好直接运行它。

要直接从 cron 运行 PHP 脚本:

1 * * * * /usr/bin/php /path/to/your/php/script.php

相关内容