Разрешить значение php работать только в подкаталоге - PullRequest
0 голосов
/ 05 сентября 2018

В моем php.ini я отключил allow_url_fopen. Я хотел бы включить его для моего каталога / example, как показано ниже, но он не работает. Однако, если я переместу директиву, чтобы разрешить ее из / example, в ~ ~ .php $ расположение над ней, то она будет работать нормально. Я думаю, что блок местоположения / example никогда не обрабатывается. Любые идеи, как разрешить работу URL-fopen только в каталоге / example?

server {
  location ~\.php$ {
    fastcgi_pass 127.0.0.1:9000;
    include fastcgi_params;
  }

  location /example {
    fastcgi_param PHP_ADMIN_VALUE "allow_url_fopen=1";
  }
}

1 Ответ

0 голосов
/ 05 сентября 2018

nginx выбирает один location для обработки запроса. Подробнее см. в этом документе .

Блок регулярного выражения location имеет приоритет над обычными блоками prefix location, поэтому любой URI, заканчивающийся .php, будет обрабатываться вашим блоком location ~\.php$, независимо от того, начинается ли оно с /example. Подробнее см. в этом документе .

Если вы хотите создать location, который отправляет дополнительные параметры fastcgi, вам нужно будет включить все необходимые директивы fastcgi.

Например:

location ~\.php$ {
    fastcgi_pass 127.0.0.1:9000;
    include fastcgi_params;
}

location ^~ /example {
    location ~\.php$ {
        fastcgi_pass 127.0.0.1:9000;
        include fastcgi_params;
        fastcgi_param PHP_ADMIN_VALUE "allow_url_fopen=1";
    }
}
...