首页 > 解决方案 > 允许 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";
  }
}

标签: phpnginxnginx-config

解决方案


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";
    }
}

推荐阅读