【问题标题】:Cron job wont run authenticate callCron 作业不会运行身份验证调用
【发布时间】:2018-11-07 22:31:13
【问题描述】:

我需要此代码每 3 小时运行一次,以进行 API 身份验证调用,以获取用于进行其他 API 调用的临时令牌。我将它存储在一个单独的 php 文件中,并在需要时更新它

它在浏览器中有效,但在 cron 作业中无效。我所有其他的 cron 作业都可以工作并且格式相同。我错过了什么?

*编辑:这是我的 cron 调用 -

/usr/local/bin/php /home/mysite.com/getToken.php

<?php

    Token();

    function Token(){
        header("Access-Control-Allow-Origin: https://example.com");
        header("Access-Control-Allow-Headers: Access-Control-Allow-Origin, Access-Control-Allow-Headers, Access-Control-Allow-Methods, Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers");
        header("Access-Control-Allow-Methods: PUT, POST, GET, OPTIONS");
        header("Access-Control-Allow-Credentials: true");

        $params = array("Username" => "fuu", "Password" => "bar", "PrivateKey" => "123456789");
        $auth_url = 'https://example.com/api/Rest/authenticate';
        $ch = curl_init();
        $postData = http_build_query($params);
        curl_setopt($ch, CURLOPT_POSTFIELDS, "$postData");
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_URL, "$auth_url");
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $data = curl_exec($ch);
        $token = $data;
        curl_close($ch);
        file_put_contents({$_SERVER['DOCUMENT_ROOT']} . "/Token.php", $token);
        echo $token;
    }   
?>

【问题讨论】:

  • 值得在这篇文章中概述您的 cronjob 命令,以便所有人都可以看到您的请求以及可能影响您预期输出的任何可能的权限问题。
  • Ergo,这“可能”是由于文件权限或其他一些 cron 问题,但除了执行 obv 在浏览器中工作的 php 脚本之外,我们看不到发生了什么。
  • 谢谢,刚刚添加了

标签: php curl cron


【解决方案1】:

问题出在$_SERVER['DOCUMENT_ROOT'] - 通过shell 执行PHP 脚本时这个是空的。

设置的东西也包含路径:

  ["PHP_SELF"]=>
  string(30) "/var/www/html/documentRoot.php"
  ["SCRIPT_NAME"]=>
  string(30) "/var/www/html/documentRoot.php"
  ["SCRIPT_FILENAME"]=>
  string(30) "/var/www/html/documentRoot.php"
  ["PATH_TRANSLATED"]=>
  string(30) "/var/www/html/documentRoot.php"
  ["DOCUMENT_ROOT"]=>
  string(0) ""

但是,如果我是你,我宁愿将其放入数据库中,然后从那里读取和写入。但这只是一个提示。

【讨论】:

  • 谢谢,是的,我相信这样会更安全
猜你喜欢
  • 2014-10-18
  • 2023-04-03
  • 2018-11-07
  • 1970-01-01
  • 2013-01-10
  • 2013-07-02
  • 2021-06-06
相关资源
最近更新 更多