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 ответ:
Это был мучительный поиск для меня, но я нашел очень простой, но неясный ответ. Прежде всего, позвольте мне уточнить мой предыдущий вопрос, что я не понимал, что мой 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>