`
icarusli
  • 浏览: 531446 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

no input file specified nginx 多个虚拟主机

    博客分类:
  • WEB
阅读更多
今天配置nginx rewrite 的时候遇到一个问题,就是访问服务器的是时候提示 No input file
specified.访问PHP,访问php就没有事,可以正常访问。猜想可能是php-cgi的问题吧,google 了一
下,果然问题出现在这里。
网上提供的解决方法:
1、 php.ini(/usr/local/php/etc/php.ini)的配置中这两项
cgi.fix_pathinfo=1  (这个是自己添加的)
doc_root=
 2、nginx配置文件/usr/local/nginx/conf/nginx.conf 中注意以下部分
location ~ \.php$ {
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  /var/www/www.abc.com/
$fastcgi_script_name;
                include               fastcgi_params;
        }
红字部分是虚拟主机的根目录。然后重启 php-fpm 和nginx
 我只实践了第二种方法,方法如下:
为 abc.com 创建一个 fastcgi_params 配置文件
vim /usr/local/nginx/conf/abc_fcgi.conf
fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx;
fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;
fastcgi_param  SCRIPT_FILENAME    /var/www/www.abc.com/$fastcgi_script_name;
fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;
红色部分根据自己需要添加。
abc.com   虚拟主机配置文件
vim /usr/local/nginx/conf/abc.conf
server
  {
     listen      80;
     server_name  abc.com  www.abc.com;
     index index.html index.htm index.php;
     root  /var/www/www.abc.com;
     include /var/www/www.abc.com/.htaccess;
    location ~ .*\.(php|php5)?$
    {
          #fastcgi_pass  unix:/tmp/php-cgi.sock;
          fastcgi_pass  127.0.0.1:9000;
          fastcgi_index index.php;
         include abc_fcgi.conf;
     }
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
   {
        expires      30d;
   }
   location ~ .*\.(js|css)?$
   {
      expires      1h;
   }
   error_page  404  =  /404.gif;
   log_format  88  '$remote_addr - $remote_user [$time_local] "$request" '
                     '$status $body_bytes_sent "$http_referer" '
                     '"$http_user_agent" $http_x_forwarded_for';
   access_log  logs/88_log  88;
}
其实还有一种解决办法就是很浪费资源,就是拷贝多个 php-fpm.conf 文件,每个域名一个,开启不
同的端口,每个配置文件都要添加不同的目录.
例如 abc.com  123.com 两个站点
cp /usr/local/php/etc/php-fpm.conf  /usr/local/php/etc/abc.com.conf
cp /usr/local/php/etc/php-fpm.conf  /usr/local/php/etc/123.com.conf
先修改 abc.com 虚拟主机
找到php_defines,在下面添加
<value name="open_basedir">/var/www/www.abc.com:/tmp:/var/tmp</value>
然后修改端口
<value name="listen_address">127.0.0.1:9001</value>
修改 123.com 虚拟主机
找到php_defines,在下面添加
<value name="open_basedir">/var/www/www.123.com:/tmp:/var/tmp</value>
然后修改端口
<value name="listen_address">127.0.0.1:9002</value>
 最后修改启动脚本:
vim /usr/local/php/sbin/php-fpm
注释掉原来的 #$php_fpm_BIN –fpm $php_opts,田间
 $php_fpm_BIN --fpm --fpm-config /usr/local/php/etc/www.abc.com.conf
 $php_fpm_BIN --fpm --fpm-config /usr/local/php/etc/www.123.com.conf
 启动服务
 #/usr/local/php/sbin/php-fpm restart
 修改  nginx.conf 不同的虚拟主机对应不同的 php-fpm 端口,这样就不会造成No input file
specified
虚拟机测试nginx 遭遇 No input file specified,反复装了N次,终于找到解决办法
 
1、 php.ini(/etc/php5/cgi/php.ini)的配置中这两项
cgi.fix_pathinfo=1  (这个是自己添加的)
doc_root=
 
2、nginx配置文件/etc/nginx/sites-available/default 中注意以下部分
 
location ~ \.php$ {
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  /var/www/sitepath$fastcgi_script_name;
                include               fastcgi_params;
        }
红色部分路径需要根据你主机主目录的实际情况填写,也可以用$document_root代替,其值实为PHP配置文件中的basedir一值。

出现问题的原因
1、虚拟主机问题造成的,当绑定第二个域名的时候其实出错
2、fastcgi配置有问题


解决办法
1、找到php.ini配置文件修改里面对应的参数为下面的结果
cgi.fix_pathinfo=1
doc_root=

注:doc_root不需要设置

 

2、nginx中的配置根据配置环境而定

主要是修改fastcgi

例子一:
查看nginx.conf配置文件中是否定义了
location ~ .*\.(php|php5)?$
    {
      #fastcgi_pass  unix:/tmp/php-cgi.sock;
      fastcgi_pass  127.0.0.1:9000;
      fastcgi_index index.php;
      include fcgi.conf;    (当这一行没有注释的情况下)
    }

查看fcgi.conf的配置
添加这一行
fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
即可


例子二:
若配置文件中注释掉了fcgi.conf
直接在里面添加即可


location ~ .*\.(php|php5)?$

{

    #fastcgi_pass unix:/tmp/php-cgi.sock;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME    $document_root$fastcgi_script_name;  添加此行即可
    #include fcgi.conf;

}


最终的意思还是说没有定义的原因
重新定义这个即可
fastcgi_param SCRIPT_FILENAME    $document_root$fastcgi_script_name;

分享到:
评论

相关推荐

    nginx提示No input file specified怎么办.docx

    解决 "No input file specified" 错误需要从多方面进行设置和调整,包括 cgi.fix_pathinfo 参数的设置、Nginx 配置文件的设置、SCRIPT_FILENAME 变量的设置和权限设置。只有通过正确的设置和调整,才能彻底解决 "No ...

    nginx+php出现No input file specified解决办法

    今天在自己本地的开发环境突然出现了No input file specified错误,反复检查返现自己的配置文件和配置路径以及权限都没有问题。经过反复的排查终于发现了问题,现将问题及解决分享如下: 问题原因分析 在GitHub上...

    提示No input file specified的解决方法

    在编程中,我们经常会遇到 "No input file specified" 的提示,这个错误信息很容易让人感到困惑和沮丧。实际上,这个错误信息是由于服务器或编程语言的配置问题引起的。今天,我们将讨论四种不同的解决方法来解决这...

    提示No input file specified的解决方法.docx

    下面将从IIS、Apache和Nginx三个方面详细介绍解决"No input file specified"错误的方法。 IIS解决方法 在IIS服务器中,出现"No input file specified"错误,可能是由于PHP.ini文件中的doc_root行配置不正确。解决...

    报错 No input file specified的解决办法

    通过以上分析,我们可以看到 "No input file specified" 报错涉及到多方面因素,需要耐心和细致地排查。一旦找到问题根源并解决,就可以通过 "3能显示了,成功.txt" 文件来确认问题是否已经解决。希望这些信息对你...

    详解no input file specified 三种解决方法

    在Web服务器运行PHP代码时,常常会遇到“No input file specified”错误,这是一个在IIS、Apache和Nginx服务器上都可能出现的问题。解决这个问题通常需要对服务器的配置文件进行修改。下面将分别介绍针对IIS、Apache...

    【LNMP】提示Nginx PHP “No input file specified”错误的解决办法

    在LNMP(Linux + Nginx + MySQL + PHP)环境下部署Web应用时,用户可能会遇到一个常见的问题:“No input file specified.” 这个错误提示通常出现在尝试访问一个不存在的PHP文件或无法正确识别请求的文件时。...

    电脑提示“No input file specified”怎么办.docx

    “No input file specified”是一个常见的错误提示,通常出现在Web服务器(如IIS、Apache、Nginx)尝试运行PHP脚本时未能找到指定的输入文件。这可能是由于配置文件设置不当、文件路径错误或服务器配置问题导致的。 ...

    关于PHP5.6+版本“No input file specified”问题的解决

    总的来说,"No input file specified"错误是PHP FastCGI模式下PATH_INFO处理的一个常见问题。通过理解这个问题的根源以及修改.htaccess文件的方法,开发者可以有效地解决这个问题,保证网站或应用的正常运行。记住,...

    nginx + php 安装配置——WEB页面

    安装完毕后,我们需要编辑Nginx的配置文件,通常位于`/etc/nginx/nginx.conf`或`/etc/nginx/sites-available/`目录下,创建一个新的虚拟主机配置。例如,创建一个名为`myweb.conf`的文件,并添加以下内容: ``` ...

    Nginx中部署Angular项目遇到的坑巨坑

    网上搜索Angular 项目编译后部署到 Nginx 中的方法,多数文章都介绍了需要在 Nginx 中的配置文件的 location 中特别指定跳转到首页来避免刷新导致404的问题,那么完整的server 代码是: server { listen 80; ...

    varnish服务器[参考].pdf

    在配置PHP与FastCGI时,可能会遇到"No input file specified."的问题。这通常是由于php.ini中的配置错误,例如`cgi.fix_pathinfo`和`doc_root`设置不当。确保这两个值正确无误,并根据实际情况为每个虚拟主机设置...

    YGBOOK带采集规则

    伪静态配置参见压缩包中 txt 文件,针对不同环境的有不同配置说明(自带.htacess 文件重新优化了兼容性,解决了 apache+nts 模式下可能出现的“No input file specified.”问题) 安装步骤: 1.将文件解压后上传至...

    varnish服务器[借鉴].pdf

    在PHP配置中,确保`cgi.fix_pathinfo=1`并且`doc_root`设置正确,以避免“No input file specified.”的错误。同时,Nginx中的FastCGI配置也需要确保`SCRIPT_FILENAME`变量指向正确的PHP脚本路径,例如: ```nginx ...

Global site tag (gtag.js) - Google Analytics