gpt4 book ai didi

php - 如何在共享主机上使用已编译的 php-cgi 在 php 中使用 getenv() 并在 .htaccess 中使用 SetEnv

转载 作者:IT王子 更新时间:2023-10-28 23:52:45 28 4
gpt4 key购买 nike

只是结合上下文来澄清主要问题:

在我的开发机器上,PHP5.3.1 作为一个模块安装在 Apache 上,我在我的应用程序的根 .htaccess 文件中使用 SetEnv APPLICATION_ENVIRONMENT 开发。然后可以使用 getenv('APPLICATION_ENVIRONMENT') 从任何 php 脚本轻松检索它。

在生产服务器上,在共享主机(dreamhost)上,我自己编译了 php5.3.1,因为它不被直接支持。一切正常,除了 getenv('APPLICATION_ENVIRONMENT') 返回 false。

在我的域的共享主机根 .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 所在的位置。在名为 dispatch.fcgi 的文件上执行 chmod 744,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'); 检索的;

关于php - 如何在共享主机上使用已编译的 php-cgi 在 php 中使用 getenv() 并在 .htaccess 中使用 SetEnv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2008123/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com