16

主な質問を明確にするために文脈を入れるだけです:

私の開発マシンでは、PHP5.3.1 がモジュールとして Apache にインストールされています。アプリケーションのルート .htaccess ファイルで SetEnv APPLICATION_ENVIRONMENT 開発を使用しています。その後、getenv('APPLICATION_ENVIRONMENT') を使用して任意の php スクリプトから簡単に取得できます。

運用サーバーの共有ホスト (dreamhost) では、直接サポートされていないため、php5.3.1 を自分でコンパイルしました。getenv('APPLICATION_ENVIRONMENT') が false を返すことを除いて、すべて正常に動作します。

ドメインの sharedhost root .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 が返されます。これを解決する方法はありますか?

4

3 に答える 3

15

わかりました、やっと手に入れました。dreamhost では、fastcgi を使用して環境変数を宣言することができます。この単純なスクリプトを追加するだけで構成されます

#!/bin/sh
export PHP_FCGI_CHILDREN=2
exec /home/USERNAME/YOURDOMAIN/cgi-bin/php.cgi

これは、コンパイルした PHP5.3.1 が置かれた場所です。ドリームホストのウォッチドッグによってより多くのメモリが許可されるdispatch.fcgiと呼ばれるそのファイルのchmod 744。

その後、ドメインの .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'); を介して取得できます。

于 2010-01-05T21:22:57.113 に答える
10

ディレクティブが機能するにはSetEnv、ホスティング サービスでmod_envモジュールが有効になっている必要があります...

ただし、有効化されていても、使用許可を得る必要がない場合がありますSetEnv

問題がコードにないことを確認するために、次の出力を確認することをお勧めします。phpinfo()ページの下部に、PHP から見た環境変数を含むセクションがあるはずです。あなたにとって良い兆候ではありません...

于 2010-01-05T18:57:25.453 に答える