Nginx中不同的PHPconfiguration

我有一个networking服务器运行多个服务器(虚拟主机)使用nginx和fastcgi传递到unixsockets。

我想完成的是使用beta.example.com和live.example.com进行设置,其中活动站点已closureserror_reporting(但仍然logging到文件),并在beta站点error_reporting处于打开状态。

所以对于Apache我会做一些事情:

<VirtualHost *:80> ServerName beta.example.com [...] php_flag display_errors on php_flag display_startup_errors on php_value error_reporting -1 [...] </VirtualHost> 

当使用googling时,我还没有find任何可以使用fastcgi将这些parameter passing给PHP的地方。 有谁知道如何做到这一点?

现在的configuration是(简化):

 server { server_name beta.example.com; [...] fastcgi_pass unix:/var/run/nginx/php-fastcgi.sock; fastcgi_index index.php; } 

您可以使用以下语法将这些选项从nginx传递给PHP fastcgi:

 fastcgi_param PHP_FLAG "display_errors=on \n display_startup_errors=on"; fastcgi_param PHP_VALUE "error_reporting=-1"; 

注意换行符( \n )必须在传递的选项之间。

出于某种原因PHP_FLAG对我没有任何影响,但突然这条线路工作:

 fastcgi_param PHP_VALUE "display_errors=on \n display_startup_errors=on \n error_reporting = E_ALL \n error_log = /var/log/nginx/foo-bar.error.log"; 

nginx / 1.11.6,php / php-fpm 5.6.31-4

你可以使用另一个套接字运行另一个php-fastcgi进程,并使用新套接字从你的文章中使用configuration代码片段。 另一个好处是更多的隔离,例如你可以在一个用户下运行第二个php进程,这个用户没有访问权限来混乱生产网站。

nginx方面看起来像这样:

 server { server_name production.example.com; [...] fastcgi_pass unix:/var/run/nginx/php-fastcgi.sock; fastcgi_index index.php; } server { server_name beta.example.com; [...] fastcgi_pass unix:/var/run/nginx/php-fastcgi-beta.sock; fastcgi_index index.php; } 

PHP方面取决于你如何启动的PHP fastcgi进程。