我在Mac OS X 10.9.4上运行Apache 2.2.26和PHP 5.4.24。我在这个系统上运行了几个虚拟主机,它们都能成功运行。我正在尝试将环境变量添加到其中一个虚拟主机,但我不希望它们在.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"
再次明确一点,我的虚拟主机运行良好。只是环境变量在我的PHP代码中被调用时不会出现。我已经尝试了这三个命令中的每一个:
echo $_SERVER["siteid"];
echo getenv("siteid");
echo apache_getenv("siteid");
我做错了什么??
这对我来说是一个痛苦的探索,但我找到了一个非常简单但晦涩的答案。首先,让我澄清一下我之前的问题,我没有意识到我的Mac运行的是OS X Server,这有效地改变了Apache在我的系统上运行的方式。
话虽如此,下面是通过OS X Server应用程序安装在我的系统上的等效httpd-vhosts.conf文件PER虚拟主机。
/Library/Server/Web/Config/apache2/sites/0000_any_80_mylocalsite.conf
显然,"80"是用于常规http请求的端口,"mylocalite"是我创建的本地虚拟主机(在OSXServer应用程序中)的名称。现在这个文件已经由OSXServer生成,我现在可以按如下方式编辑它:
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 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>
求你了,我希望这有一天能帮助到别人。我花了太多时间寻找这个解决方案,却在暴力战术中偶然发现了它,我想知道这有望为人们节省数小时的搜索时间。