Переменные среды php htaccess php-fpm mod_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) также пусто. Но я попытался превратить переменные_order = 'EGPCS' в php.ini, и $ _ENV отображается правильно, но без каких-либо переменных набора.htaccess, и результат сценария точно такой же. Это необходимо для того, чтобы сайт мог кэшировать как мобильные, так и не мобильные программы просмотра в разных каталогах.
1 ответ
В вашей директиве 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>
Сайт работает быстро, друпал работает, другие файлы работают, переменные среды переданы. НЕ ИСПОЛЬЗУЙТЕ ProxyPass ИЛИ ProxyPassMatch!!!! Он не пропустит переменные окружения и не сломает некоторые пакеты php. Некоторые показали, что вы можете использовать LocationMatch и Interpolation, но, похоже, это работает только для ajp://, а не для fcgi://!!!
К сожалению, это настраивает пользователя не на то, что задано в конфигурации пула php-fpm, а на пользователя и группу apache. Это еще один вопрос, поэтому я отмечу это как решенный. Я должен изменить доступные для записи папки на пользователя и группу apache, что довольно безопасно, если вы об этом думаете, но это также не sequitur и имеет некоторые странные проблемы.