web-dev-qa-db-ja.com

SetEnvをmod_fcgidとともに使用して、仮想ホスト固有のオプションをPHPアプリケーションに渡すにはどうすればよいですか?(Apache2)

Mod_phpで非常に簡単に機能するFastCGIで何かを処理する方法を理解するのに問題が発生しています。 SetEnvを使用して、VirtualHostディレクティブからPHPアプリケーションにオプションを渡す前。例:

SetEnv MYAPP_LOGGING_ROOT "/usr/local/myapp/logs"

$_SERVER['MYAPP_LOGGING_ROOT']からこの値にアクセスでき、これを管理するのに非常に便利な方法でした。ただし、この値はFastCGI環境のmy PHPアプリケーションに渡されていません。

次のことを試しましたが、PHPアプリケーションにも渡されていないようです:

FcgidInitialEnv MYAPP_LOGGING_ROOT "/usr/local/myapp/logs"

単純なことを見逃しているのでしょうか、それとももっと複雑なことをする必要があるのでしょうか。

1
Beau Simensen

SetEnvはmod-fcgidで動作します。私の設定:

    <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
            FCGIWrapper /usr/lib/cgi-bin/php5
            AddHandler fcgid-script .php
            Options ExecCGI Indexes
            SetEnv MYAPP_LOGGING_ROOT "/usr/local/myapp/logs"
    </Directory>

foo.php:

<?php
    var_dump($_SERVER["MYAPP_LOGGING_ROOT"]);
?>

テスト:

curl localhost/foo.php 
string(21) "/usr/local/myapp/logs"
2
ooshro