[英]How to run a php script in cron
我发现了很多关于这个的问题和文章,但我仍然有一些困难。 我正在使用以下命令 /usr/bin/php home/domain.com/public_html/cron/script.php 我收到以下错误状态:404 Not Found X-Powered-By:PHP/5.2.8 Content-type :文本/html
未指定输入文件。
我正在使用 Cpanel,该文件托管在 domain.com/cron/script.php Anyideas,谢谢:p
在脚本名称上放置一个前导斜杠,即
/usr/bin/php /home/domain.com/public_html/cron/script.php
除非您真的打算通过网络运行脚本,如 lacqui 的回答,并且您不介意随机第三方能够在他们喜欢的任何时间运行它,否则您没有理由将它放在您的 public_html 目录中; 恰恰相反。
尝试:
wget -O - http://domain.com/cron/script.php
看看你是否得到更好的结果。
编辑:添加了“- O - ”以不将输出写入主文件夹。
我意识到这是一个老问题,您可能已经找到了解决方案,但上述答案都没有帮助我,并且在运行 cron 脚本时遇到了相同的 404 错误。
问题与编写 php 脚本路径的方式有关。 路径必须像这样从 public_html 开始/usr/bin/php public_html/public/index.php
您可能需要使用称为 php-cli 的二进制文件,而不仅仅是 php。
在几个共享主机中,cron 不提供wget
和curl
命令。 如果想要从 cron 执行web (http)
请求,那么可以通过在 cron php 脚本中将所需的 web url 调用为 php curl 来完成。
下面是要放在 cron php 文件中的示例代码:
<?php
function callRemoteHttp($url)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
$ret_arr = array('data' => $result, 'status_code' => curl_getinfo($curl, CURLINFO_HTTP_CODE));
curl_close($curl);
return $ret_arr;
}
$ret = callRemoteHttp('http://example.com?param1=value1¶m2=value2');
?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.