允许php值仅在子目录中工作

时间:2018-09-05 19:37:06

标签: php nginx nginx-config

在我的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 :(得分:4)

nginx选择一个location来处理请求。有关详细信息,请参见this document

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

如果要创建发送其他fastcgi参数的location,则需要包括所有必需的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";
    }
}