Apache2 mod_proxy_fcgi ProxyFCGISetEnvIf Directory Specifi c Переопределить - PullRequest
0 голосов
/ 06 мая 2020

Кто-нибудь знает, можно ли переопределить директиву ProxyFCGISetEnvIf в разделе каталога? В документации для apache mod_proxy_fcgi говорится, что он действителен в разделе, но я не вижу, чтобы ProxyFCGISetEnvIf применялся, когда он находится в каталоге.

Вот пример:

<VirtualHost *:443>
    ServerName  test7.com
    ServerAlias  

    DocumentRoot /var/www/test

    ProxyPassMatch ^(.*\.php)$ fcgi://127.0.0.1:9001/var/www/test/$1
    ProxyFCGISetEnvIf "true" PHP_ADMIN_VALUE "open_basedir=/var/www/test:/usr/share/php:/usr/share/pear \n upload_tmp_dir=/tmp; \n session.save_path=/var/www/php_sessions;"

    <Directory "/var/www/test/cooldir">
         ProxyFCGISetEnvIf "true" PHP_ADMIN_VALUE "open_basedir=/var/www/test:/var/www:/usr/share/php:/usr/share/pear \n upload_tmp_dir=/tmp; \n session.save_path=/var/www/php_sessions;"
    </Directory>

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/test7.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/test7.com/privkey.pem

</VirtualHost>

Когда я нахожусь в каталоге «cooldir», phpinfo () показывает, что значение переменной open_basedir не изменилось. Итак, какова иерархия значений ProxyFCGISetEnvIf в mod_proxy_fcgi? Я бы предположил, что он должен работать как nginx с определенными объявлениями каталогов c, переопределяющими верхний уровень. Например, в nginx это работает:

location /cooldir {
    root /var/www/test/;
    index index.php index.html index.htm;

    location ~ ^/cooldir/(.+\.php)$ {
        try_files $uri =404;
        root /var/www/test/;
        fastcgi_pass 127.0.0.1:9001;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $request_filename;
        fastcgi_param  PHP_ADMIN_VALUE "open_basedir=/var/www:/tmp:/usr/share:/var/www/php_sessions \n upload_tmp_dir=/tmp \n session.save_path=/var/www/php_sessions";
        include /etc/nginx/fastcgi_params;
        limit_req zone=one burst=5;
    }
}

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 06 мая 2020

Вы должны использовать директиву <Location> вместо <Directory> в соответствии с ответом, который я получил в списке рассылки пользователей apache:

<Location "/webmail">
        ProxyFCGISetEnvIf "true" PHP_ADMIN_VALUE "open_basedir=/var/lib/roundcube:/etc/roundcube:/usr/share:/tmp:/var/www/php_sessions:/var/log/roundcube; \n upload_tmp_dir=/tmp; \n session.save_path=/var/www/php_sessions;"
</Location>
...