如何在共享主机
在上下文中阐明的主要问题只是把在用getenv()在PHP和SETENV中的.htaccess与编译PHP,CGI:如何在共享主机
在我的机器,PHP5.3.1是作为模块安装在Apache上,我在我的应用程序的根.htaccess文件中使用SetEnv APPLICATION_ENVIRONMENT开发。然后可以通过getenv('APPLICATION_ENVIRONMENT')从任何php脚本中轻松检索。
在生产服务器上,在共享主机(dreamhost)上,我编译自己php5.3.1,因为它不直接受支持。一切正常,但getenv('APPLICATION_ENVIRONMENT')返回false。
在sharedhost根的.htaccess我的域,我用这个.htaccess文件
Options +ExecCGI
AddHandler php-cgi .php
Action php-cgi /cgi-bin/php.cgi
<FilesMatch "^php5?\.(ini|cgi)$">
Order Deny,Allow
Deny from All
Allow from env=REDIRECT_STATUS
</FilesMatch>
Options -indexes
php5.cgi位于/ cgi-bin目录和工作得很好。 当然在我的应用程序的根文件夹的我还有另外的.htaccess定义:
SetEnv APPLICATION_ENVIRONMENT production
但使用的getenv(“APPLICATION_ENVIRONMENT”),当它返回false,任何想法如何解决这个问题?
好吧,我终于明白了。在dreamhost上,可以使用fastcgi,因此可以用它声明环境变量。它包括只是添加这个简单的脚本
#!/bin/sh
export PHP_FCGI_CHILDREN=2
exec /home/USERNAME/YOURDOMAIN/cgi-bin/php.cgi
这是我编译的PHP5.3.1所在的位置。 该文件上的chmod 744调用dispatch.fcgi,dreamhost的看门狗将允许更多的内存。
之后,我加入到我的域名的.htaccess如下:
Options +ExecCGI
AddHandler fastcgi-script fcg fcgi fpl
AddHandler php5-fastcgi .php
Action php5-fastcgi /dispatch.fcgi
现在
在应用程序的根我有另一种的.htaccess:
SetEnv APPLICATION_ENVIRONMENT staging
在PHP脚本通过为检索GETENV( 'REDIRECT_APPLICATION_ENVIRONMENT');
哦谢谢你!我正试图在.htaccess中设置一个环境变量。我终于可以通过将PHP作为CGI应用程序更改为FastCGI来实现它。 – 2013-11-14 03:48:14
为什么使用getenv('REDIRECT_APPLICATION_ENVIRONMENT')而不是getenv('APPLICATION_ENVIRONMENT')? – 2014-06-14 16:20:06
为此,我不得不忽略环境变量的前缀“REDIRECT_”部分。 – 2014-06-14 17:24:51
只是猜测:也许你的主机不允许这个指令在.htaccess文件中被覆盖? – 2010-01-05 18:20:46