apache — переменные среды недоступны, когда скрипт вызывается из задания / командной строки Cron

мой test.php файл выглядит так:

<?php

echo $_SERVER["myEnvVariable"];
echo getenv("myEnvVariable");

Выше дважды вернет мою переменную окружения set. Работает, когда скрипт вызывается извне сервера.

Если я вызываю тот же сценарий на сервере с помощью командной строки:

php test.php

или используя cronjob

****** curl http://localhost/test.php

ничего не возвращается.

Как сделать доступными переменные среды на самом сервере? Я устанавливаю переменные окружения в Apache httpd.conf файл.

2

Решение

Выполните задание cron следующим образом:

myEnvVariable=value php test.php

Переменная будет доступна из getenv("myEnvVariable"), не в $_SERVER,

2

Другие решения

Попробуйте установить Wget для Http: //address.domain/test.php в хрон.
Я знаю, что это не решение, но может помочь.

1

Я предлагаю вам сделать специальный вызов curl для вашего файла. Что-то вроде этого:

test.php (это ваш файл, здесь без изменений)

specialcurl.php:

<?php
$curl = curl_init('http://www.youraddresshere.com/pathtofile/test.php');
curl_setopt($curl, CURLOPT_FAILONERROR, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($curl);
echo $result;
curl_close($curl);
?>

Теперь запустите с помощью команды php скрипт specialcurl.php с сервера как:

php specialcurl.php

Смысл здесь в том, чтобы вызвать ваш test.php как действительный пользователь, вызывающий ваш сервер. Меня устраивает.

0
По вопросам рекламы [email protected]