nginx — разрешить php работать только в подкаталоге

В моем 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";
}
}

2

Решение

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

регулярное выражение location блок имеет приоритет над обычным префикс 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";
}
}
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]