http-vhosts.conf переменные среды виртуального хоста не работают


Я запускаю Apache 2.2.26 с PHP 5.4.24 на Mac OS X 10.9.4. У меня есть несколько виртуальных хостов, работающих в этой системе, и все они работают успешно. Я пытаюсь добавить переменные среды к одному из виртуальных хостов, и я не хочу, чтобы они были внутри .htaccess поэтому мой единственный вариант-это добавить их в httpd-vhosts.конф.

Проблема в том, что переменные окружения не появляются после их установки в httpd-vhosts.conf файл (и, конечно же, после перезапуска Apache " sudo apachectl restart"). Если, Однако, я их добавлю .htaccess (просто для сравнения), они выглядят просто отлично. Чего мне не хватает?

NameVirtualHost *:80

<VirtualHost *:80>
  ServerName mysite.local
  DocumentRoot "/path/to/mysite.com"
  SetEnv siteid 1234
  ErrorLog "/var/log/apache2/mysite.local-error_log"
</VirtualHost>

Я также дважды проверил свой php.ini-файл, чтобы убедиться, что там нет ничего запретительного, и единственная соответствующая строка выглядит хорошо:

variables_order = "GPCSE"

Опять же, просто для ясности, мои виртуальные хосты работают нормально. Просто переменные окружения не появляются при вызове в моем PHP-коде. Я попробовал каждую из этих трех команд:

echo $_SERVER["siteid"];
echo getenv("siteid");
echo apache_getenv("siteid");

Что я могу сделать? поступать неправильно??

1 3

1 ответ:

Это был мучительный поиск для меня, но я нашел очень простой, но неясный ответ. Прежде всего, позвольте мне уточнить мой предыдущий вопрос, что я не понимал, что мой Mac работает на OS X Server, который эффективно изменил способ работы Apache в моей системе.

С учетом сказанного ниже приведен эквивалент httpd-vhosts.conf-файл на виртуальный хост , установленный в моей системе через серверное приложение OS X.

/Library/Server/Web/Config/apache2/sites/0000_any_80_mylocalsite.conf

Очевидно, что" 80 " - это порт для регулярных http-запросов и "mylocalsite" - это имя локального виртуального хоста, который я создал (в серверном приложении OS X). Теперь, когда этот файл был создан OS X Server, я могу отредактировать его следующим образом:

sudo vi /Library/Server/Web/Config/apache2/sites/0000_any_80_mylocalsite.conf

Который открыл конфигурационный файл, похожий и почти точно такой же, как обычный httpd-vhosts.conf файл (обратите внимание на строку SetEnv testid "1234" , которая является решением, которое я искал, и это может быть сделано только вручную, а не через сервер OS X приложение)...

<VirtualHost *:80>
  ServerName mysite.local
  ServerAdmin admin@example.com
  DocumentRoot "/my/local/docroot/path/to/mysite.com"
  SetEnv testid "1234"
  DirectoryIndex index.html index.php /wiki/ /xcode/ default.html
  CustomLog /var/log/apache2/access_log combinedvhost
  ErrorLog /var/log/apache2/error_log
  <IfModule mod_ssl.c>
      SSLEngine Off
      SSLCipherSuite "ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM"
      SSLProtocol -ALL +SSLv3 +TLSv1
      SSLProxyEngine On
      SSLProxyProtocol -ALL +SSLv3 +TLSv1
  </IfModule>
  <Directory "/my/local/docroot/path/to/mysite.com">
      Options All -Indexes -ExecCGI -Includes +MultiViews
      AllowOverride All
      <IfModule mod_dav.c>
          DAV Off
      </IfModule>
      <IfDefine !WEBSERVICE_ON>
          Deny from all
          ErrorDocument 403 /customerror/websitesoff403.html
      </IfDefine>
  </Directory>
</VirtualHost>
Пожалуйста, я надеюсь, что когда-нибудь это поможет кому-то еще. Я потратил слишком много времени на поиски этого решения, только чтобы наткнуться на него в тактике грубой силы, и я хотел бы знать, что это, надеюсь, сэкономит кому-то часы поиска себя.