В моем 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";
}
}
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";
}
}
Других решений пока нет …