2011-02-10 19 views
5

.htaccessにphp_value session.save_pathを設定する必要があります。 これは完全なパスが必要なようですが、相対パスは機能していないようです。.htaccessでphp_valueを条件付きにしますか?

私のwebapplicationはWindowsとLinuxサーバーの両方で動作します。デプロイ上の理由から、両方のシステムで.htaccessファイルを同じにしておきたいと思います。 <%と

はphp_valueのsession.save_pathは「<%のsystempath> /セッション」

それは、.htaccessファイル自体には、このような何かを.htaccessファイルがあるディレクトリを参照することが可能ですシステムパス>は自動的に各システムに入力されますか?

+0

興味深い質問です。環境変数を使用することは可能かもしれません - わかりません –

+0

リファレンス:http://httpd.apache.org/docs/2.0/mod/mod_env.html#setenv –

答えて

1

これはApacheディレクティブでは考えられません。

しかし、あなたは、PHPでそれを行うことができます:ここでは

ini_set('session.save_path', dirname(__FILE__).'/sessions'); 

__FILE__は、現在のPHPスクリプトファイルとdirnameにファイルシステムパスを保持しているmagic constantは、そのファイルの親ディレクトリを返します。

+0

Thanxしかし、私はむしろ.htaccessでやっています。私はセッションを使用する複数のスクリプトを持っているからです。 .htaccessを使用すると、このパスを1つの場所に設定するだけで済みます。 – Dylan

+0

+1 @Dylan:Apacheは.htaccessの変数の使用をサポートしていません。 'mod_env'は環境変数を設定することを許可し、' mod_rewrite'は書き換え規則や条件でそれらを使うことができますが、それだけです。 – netcoder

1

いくつかの環境変数を使用することができます。

それはあなたが自動的に

# .htaccess 
php_value auto_prepend_file "autoprepend.php" 

そして、ini_set()でPHPを設定しますPHPファイル先頭に付加することができます

%{ENV:variable} 
+0

残念なことに 'mod_rewrite'でしか動作しません。 – netcoder

2

をとりうるか、しませんかどうかをチェックすることができます:

// autoprepend.php 
ini_set('session.save_path', __DIR__ . '/sessions'); 

この方法では、ディレクトリ内のすべてのPHPスクリプトで動作します。

0

(Apacheの.htaccessなど)は、php_valueのみをPHPファイルに適用します。

SetEnvIf Request_URI ".php$" IS_PHP 
<If "-T env('IS_PHP')"> 
    php_value auto_prepend_file "./init.php" 
</If> 
関連する問題