如何在cron中运行php脚本

时间:2009-03-28 04:39:36

标签: cron php

我发现了很多关于此的问题和文章,但我仍有一些困难。 我正在使用以下命令 / usr / bin / php home / domain.com / public_html / cron / script.php 我收到以下错误 状态:404未找到 X-Powered-By:PHP / 5.2.8 内容类型:text / html

未指定输入文件。

我正在使用Cpanel,该文件托管在domain.com/cron/script.php上 Anyideas,谢谢:p

5 个答案:

答案 0 :(得分:11)

在脚本名称上加上一个前导斜杠,即

/usr/bin/php /home/domain.com/public_html/cron/script.php

除非你真的打算通过网络运行脚本,如lacqui的回答,你不介意随机的第三方能够随时运行它,你没理由应该把它放在你的public_html目录中;恰恰相反。

答案 1 :(得分:6)

尝试:

wget -O - http://domain.com/cron/script.php

看看你是否得到了更好的结果。

编辑:添加“ - O - ”以不将输出写入主文件夹。

答案 2 :(得分:1)

您可能需要使用称为php-cli的二进制文件而不仅仅是php。

答案 3 :(得分:1)

我意识到这是一个老问题,你可能已经找到了解决方案,但上面的答案都没有帮助我,当我运行cron脚本时,我得到了同样的404错误。

问题与写入php脚本的路径的方式有关。路径必须从public_html开始,如/usr/bin/php public_html/public/index.php

答案 4 :(得分:0)

在多个共享托管wgetcurl命令中,cron不可用。如果要执行来自cron的web (http)请求,则可以通过在cron php脚本中以php curl调用所需的Web URL来完成。

下面是放在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&param2=value2');
?>