为什么apache2 + php-fpm需要cgi.fix_pathinfo = 1而nginx + php-fpm不需要?

时间:2014-11-29 22:25:00

标签: apache nginx fastcgi php

我有两个不同的服务器用于不同的目的。一个是apache2 mpm-event服务器,另一个是nginx 1.2服务器。每个服务器都运行php5-fpm / FCGI。

有什么特别的,就是在nginx服务器上,我读到的教程提到设置cgi.fix_pathinfo = 0,因为这可能是一个安全风险。我这样做了,在那台服务器上,我运行WordPress,PHPBB和其他一些问题没有问题。

然而,在apache2服务器上,我正在运行roundcube和其他一些不太知名的PHP应用程序,这些应用程序遇到致命的PHP错误,这些错误是我在php.ini中设置cgi.fix_pathinfo = 0的结果该服务器上的文件。

我的两个配置在下面,一个用于apache2,另一个用于nginx。在nginx配置中是否有一些东西允许我将cgi.fix_pathinfo设置为0,而我在apache端缺少一些相同的东西?

或者我是幸运的是,我在nginx盒子上运行的软件从来没有使用过PHP PATH全局,而apache2软件呢?

Apache2配置:

<IfModule mod_fastcgi.c>
  AddHandler fastcgi-script .fcgi
  #FastCgiWrapper /usr/lib/apache2/suexec
  FastCgiIpcDir /var/lib/apache2/fastcgi

  Alias /php5.fastcgi /var/www/fastcgi/php5.fastcgi
  AddHandler php-script .php
  FastCGIExternalServer /var/www/fastcgi/php5.fastcgi -socket /var/run/php5-fpm.sock
  Action php-script /php5.fastcgi virtual

  # This part is not necessary to get it to work, but it stops anything else from being
  # accessed from it by mistake or maliciously.
  <Directory "/var/www/fastcgi">
    Order allow,deny
    <Files "php5.fastcgi">
      Order deny,allow
    </Files>
  </Directory>
</IfModule>

nginx config:

    # Handle PHP requests
    # pass the PHP scripts to FastCGI server listening on the php-fpm socket
    location ~ \.php$ {
            try_files $uri = 404;
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
    }

假设是这些:

            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;

但找不到任何apache指南,说明如何连接类似的东西。有什么想法吗?

0 个答案:

没有答案