php htaccess variáveis de ambiente php-fpm mod_proxy_fcgi apache 2.4

1

Meu .htaccess:

SetEnv tvar "my value"
RewriteEngine on
RewriteRule .* - [E=boostpath:normal]

Minhas configurações de host virtual:

   AllowOverride All
   Options FollowSymLinks
   Require all granted
   ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9001/home/dir/public_html/www.site.com/$1

Meu arquivo 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) também está vazio. Mas eu tentei transformar variables_order = 'EGPCS' em php.ini e $ _ENV aparece corretamente, mas sem nenhuma das variáveis do conjunto .htaccess, e o resultado do script é exatamente o mesmo. É necessário que isso funcione para que um site possa armazenar em cache tanto visualizadores móveis quanto não móveis em diretórios diferentes.

    
por Wolfe 02.10.2014 / 18:10

1 resposta

0

Na sua diretiva 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>

O site é rápido, o drupal funciona, outros arquivos funcionam, variáveis de ambiente são passadas. NÃO USE ProxyPass OU ProxyPassMatch !!!! Não passará variáveis de ambiente e quebrará alguns pacotes de php. Alguns mostraram que você pode usar LocationMatch e Interpolation, mas isso parece funcionar apenas para ajp: // e não fcgi: // !!!

Infelizmente, isso não define o usuário para o que está definido na configuração do pool php-fpm, mas para o usuário e grupo do apache. Essa é outra questão, então eu vou marcar isso resolvido. Eu tenho que mudar as pastas graváveis para o usuário e grupo do apache, o que é uma espécie de segurança se você pensar sobre isso, mas também é non sequitur e tem alguns problemas estranhos.

    
por 02.10.2014 / 23:56