2013-07-03 4 views
1

На CentOS и Redhat я создал файл /etc/profile.d/marketing_vars.sh и добавлены следующие строкиПопадая переменные среды пользователя с помощью PHP

#Vars for PowerMail 
export CmsRoot="/var/www/html/cms/" 
export PMRoot_Dev="/var/www/html/powermail/" 
export PMRoot_QA="/var/www/html/powermail/" 
export PMRoot_Pro="/var/www/html/powermail/" 

в командной строке я ударил «источник marketing_vars.sh " и„CHMOD + х /etc/profile.d/marketing_vars.sh“

затем я создал файл test.php и добавил эти строки к нему

error_reporting(E_ALL^E_NOTICE); 
echo "PMRoot_Dev = " . getenv("PMRoot_Dev"); 
echo "<br>"; 
echo "PMRoot_QA = " . getenv("PMRoot_QA"); 
echo "<br>"; 
echo "PMRoot_Pro = " . getenv("PMRoot_Pro"); 
echo "<br>"; 

Когда я просматривать test.php Я получаю n o значение для любой из переменных. Может ли кто-нибудь помочь?

+0

does 'echo $ CmsRoot' (или' echo' others) показать какой-либо результат? – baldrs

+0

@Baldrs Нет, ничего не показывать – user1635914

+0

Думаю, вы используете браузер, поэтому у вас есть веб-сервер. Вы уверены, что веб-сервер (Apache?) Работает как пользователь с установленными этими переменными? Мое предположение: вы устанавливаете только эти переменные для своей учетной записи пользователя, а apache работает под пользователем www-data. – Jeroen

ответ

0

Apache on Centos не включает переменные env, как вы ожидаете. Одним из решений является включение вручную файла внутри/etc/sysconfig/httpd.

  • Append /etc/profile.d/marketing_vars.sh до конца/и т.д./sysconfig/HTTPD
  • рестарт апаш

Лучшее решение, чтобы быть последовательным в апача, CLI и crons - использовать файл конфигурации и включать/анализировать его для получения переменной.