繁体   English   中英

如何在 cron 中运行 php 脚本

[英]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 不提供wgetcurl命令。 如果想要从 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&param2=value2');
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM