11

ubuntuホームサーバーにZendをインストールしました。私の .htaccess ファイルには、次のコードがあります。

SetEnv APPLICATION_ENV development

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-s
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php [NC,L]

public フォルダーの index.php で APPLICATION_ENV をエコーすると、APPLICATION_ENV が設定されません。

私は何を間違っていますか?

Apache では Mod の書き換えが有効になっています。

4

5 に答える 5

18

.htaccess ファイル内で SetEnv を使用するには、設定する必要があると思います...

AllowOverride FileInfo

...関連する仮想ホスト ディレクトリ ブロック内。(その後、通常どおり httpd サービスを再起動します。)

さらに、PHP の実行方法によっては、そのような情報が取り除かれている可能性があります。(例: suexec は、すべての非 HTTP* 環境変数を効果的に削除します。)

于 2011-04-23T13:58:08.337 に答える
5

以下も使用できます。

RewriteRule .* - [E=ENV_NAME_HERE:ENV_VALUE_HERE]
于 2015-01-18T00:47:14.940 に答える
5

最初にmod_envをインストールする必要があります(および mod_rewrite)

Apache に次のいずれかがロードされたモジュールがあるかどうかを再確認します。

apachectl -l または httpd -l

コマンドは、私が信じているOSディストリビューションによって異なる場合があります。

.htaccess ファイルが機能するには、AllowOveride All が必要です。これは、さまざまな構成ファイル (および Apache としての OS の構成方法に応じて「パーツ」) で設定できます。最良のオプションは、それが htaccess ファイルの問題なのか、環境 1. メイン構成ファイルの任意の場所に設定:

SetEnv TESTME foobar

Apache を再起動し、PHP スクリプトから TEST をエコーし​​ます。取得した場合は、.htaccess をデバッグします。

注 1: 仮想ホストで .htacess の使用を本当に必要なフォルダーに制限するか、構成を仮想ホストに移動します。

注 2: Apache mod_dirがインストールされている場合、これらの書き換えルールはおそらく必要ありません。それを見てください

于 2011-05-20T11:16:20.697 に答える
4

ローカル サーバーの httpd.conf ファイルに SetEnv を配置することを好みます。これにより、すべてのローカル ZF アプリが開発モードで実行され、ステージング サーバーにプッシュすると、環境をステージングに設定するフラグが設定され、次に本番環境に設定されます。サーバーにはそのような設定がないため、デフォルトで本番環境になります...

このようにして、同じ .htaccess ファイルをソース管理に保持することができ、それを別のサーバーにプッシュすると、期待どおりに動作します。

middaparka は suExec について正しいです... suExec は、WebFaction フォーラムの remi によると、.htaccess ファイルにカスタム環境変数を設定することを防ぎます。

于 2011-04-23T21:02:49.603 に答える