允许 php 值仅在子目录中起作用

Allow php value to only work in a subdirectory

在我的 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 来处理请求。有关详细信息,请参阅 this document

正则表达式 location 块优先于常规 prefix location 块,因此任何 URI 结尾with .php 将由您的 location ~\.php$ 块处理,无论它是否以 /example 开头。有关详细信息,请参阅 this document

如果您想创建一个 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";
    }
}