Мне нужно, чтобы этот код запускался каждые 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;
}
?>
Ergo, это «может быть» из-за прав доступа к файлам или какой-либо другой проблемы cron, но мы не можем видеть, что происходит, кроме выполнения сценария php, который obv работает в браузере.
Спасибо, только что добавил






Проблема в $_SERVER['DOCUMENT_ROOT'] - он пуст при выполнении 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) ""
Однако, если бы я был вами, я бы лучше поместил это в базу данных, прочитал и записал оттуда / туда. Но это всего лишь намек.
Спасибо, да, так будет безопаснее, я уверен
В этом посте стоит описать ваши команды cronjob, чтобы все могли видеть, что вы запрашиваете, и любые возможные проблемы с разрешениями, которые могут повлиять на ваш ожидаемый результат.