php htaccess переменные среды php-fpm mod_proxy_fcgi апачские 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) также пуст. Но я пытался повернуть variables_order =, 'EGPCS' в php.ini и $ _ENV разоблачает право, но без любой из переменных набора .htaccess, и результат сценария - то же самое. Нужно это для работы на сайт, чтобы смочь кэшироваться и мобильный и не мобильные средства просмотра в различных каталогах.

1
задан 2 October 2014 в 21:06
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>

Site работает быстро, drupal работает, другие файлы работают, переменные окружения передаются. НЕ ИСПОЛЬЗУЙТЕ ProxyPass или ProxyPassMatch!!!!. Она не будет передавать переменные окружения и сломает некоторые php-пакеты. Некоторые показали, что можно использовать LocationMatch и Interpolation, но, похоже, это работает только для ajp://, а не для fcgi:// !!!

К сожалению, это устанавливает пользователя не на то, что установлено в конфигурации пула php-fpm, а на пользователя и группу apache. Это еще один вопрос, поэтому я отмечу, что он решен. Мне приходится менять записываемые папки на пользователя и группу apache, что вроде как безопасно, если подумать, но это также не является последовательностью и имеет некоторые странные проблемы.

0
ответ дан 4 December 2019 в 08:29

Теги

Похожие вопросы