мой test.php
файл выглядит так:
<?php
echo $_SERVER["myEnvVariable"];
echo getenv("myEnvVariable");
Выше дважды вернет мою переменную окружения set. Работает, когда скрипт вызывается извне сервера.
Если я вызываю тот же сценарий на сервере с помощью командной строки:
php test.php
или используя cronjob
****** curl http://localhost/test.php
ничего не возвращается.
Как сделать доступными переменные среды на самом сервере? Я устанавливаю переменные окружения в Apache httpd.conf
файл.
Выполните задание cron следующим образом:
myEnvVariable=value php test.php
Переменная будет доступна из getenv("myEnvVariable")
, не в $_SERVER
,
Попробуйте установить Wget для Http: //address.domain/test.php в хрон.
Я знаю, что это не решение, но может помочь.
Я предлагаю вам сделать специальный вызов 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 как действительный пользователь, вызывающий ваш сервер. Меня устраивает.