web-dev-qa-db-ja.com

phphtaccess環境変数php-fpmmod_proxy_fcgi Apache 2.4

私の.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セット変数がなく、スクリプトの結果はまったく同じです。サイトがモバイルビューアとモバイルビューア以外の両方を異なるディレクトリにキャッシュできるようにするには、これが必要です。

1
user134840

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ユーザーとグループに変更する必要があります。これは、考えてみれば安全ですが、前後関係がなく、いくつかの奇妙な問題があります。

0
user134840