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

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

Проблема в том, что переменные среды не появляются после того, как я установил их в файле 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"

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

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

Что я могу делать не так ??

3

Решение

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

С учетом сказанного ниже приведен эквивалентный файл httpd-vhosts.conf НА ВИРТУАЛЬНЫЙ ХОСТ установлен в моей системе через приложение OS X Server.

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

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

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

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

<VirtualHost *:80>
ServerName mysite.local
ServerAdmin [email protected]
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>

ПОЖАЛУЙСТА, надеюсь, это когда-нибудь поможет кому-то еще. Я потратил слишком много времени на поиски этого решения, только чтобы наткнуться на него в тактике грубой силы, и я хотел бы знать, что это, надеюсь, сэкономит кому-то часы на поиски себя.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]