私の.htaccess:
SetEnv tvar "my value"
RewriteEngine on
RewriteRule .* - [E=boostpath:normal]
私の仮想ホスト設定:
AllowOverride All
Options FollowSymLinks
Require all granted
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9001/home/dir/public_html/www.site.com/$1
私のphpファイル:
<?php
putenv("foo=bar");
echo "<br><br>env";
echo getenv("foo"); #works, outputs bar
echo "<br><br>env2";
echo getenv("tvar"); #doesn't work, empty
echo getenv("REDIRECT_tvar"); #doesn't work, empty
echo "<br><br>";
echo "<br><br>env3";
echo getenv("boostpath"); #doesn't work, empty
echo getenv("REDIRECT_boostpath"); #doesn't work, empty
echo "<br><br>";
print_r($ _ ENV)も空です。しかし、php.iniでvariables_order = 'EGPCS'を回してみたところ、$ _ ENVは正しく表示されましたが、.htaccessセット変数がなく、スクリプトの結果はまったく同じです。サイトがモバイルビューアとモバイルビューア以外の両方を異なるディレクトリにキャッシュできるようにするには、これが必要です。
VirtualHostディレクティブの場合:
<Directory /home/dir/public_html/www.site.com>
AllowOverride All
Options FollowSymLinks
Require all granted
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} ^/((.*\.php)(/.*)?)$
RewriteCond %2 -f
RewriteRule . fcgi://127.0.0.1:9001/%1 [L,P]
RewriteOptions Inherit
</Directory>
サイトは高速です、drupal動作し、他のファイルは動作し、環境変数は渡されます。ProxyPassを使用しないでくださいOR ProxyPassMatch !!!!環境変数を渡さずいくつかのphpパッケージを壊します。LocationMatchとInterpolationを使用できることを示しているものもありますが、これはajp://でのみ機能し、fcgi://では機能しないようです!!!
残念ながら、これにより、ユーザーはphp-fpmプール構成で設定されているものではなく、Apacheユーザーとグループに設定されます。それは別の質問ですが、これを解決済みとマークします。書き込み可能なフォルダーをApacheユーザーとグループに変更する必要があります。これは、考えてみれば安全ですが、前後関係がなく、いくつかの奇妙な問題があります。