2015-01-07 2 views
2

Мой test.php файл выглядит следующим образом:PHP - Переменные окружения не доступен Когда скрипт вызывается из Cron Job/Командная строка

<?php 

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

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

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

php test.php 

или с использованием cronjob

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

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

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

+3

Является ли env var установленным для учетной записи, в которой вы вошли в систему, как при запуске из командной строки? Поскольку командной строке все равно, что может быть установлено в вашей конфигурации apache –

+0

Если вы пытаетесь с http и используете настоящий url вместо localhost, вы получаете переменные env? – Maerlyn

+0

Когда вы вызываете его из командной строки с помощью команды 'php', вы обходите Apache, поэтому вы не получаете переменную env. Не уверен, как обойти это. @MarkBaker вы должны написать ответ, в котором описывается, как установить var «для учетной записи, в которую вы вошли в систему». – mopo922

ответ

1

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

myEnvVariable=value php test.php 

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

0

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

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 сценарий с сервера as:

php specialcurl.php 

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

Смежные вопросы