如何解决lighttpd"没有指定输入文件。"

时间:2015-04-26 07:03:17

标签: webserver lighttpd php-5.5

上次我使用Apache2 + PHP5作为我的网络服务器,它运行正常,除非服务器处理我的脚本太慢,我已将其更改为lighttpd + fastcgi。它比内存使用速度更快。

我的问题是当lighttpd运行一段时间"没有指定输入文件。"但有些时候还可以。但是当我重新启动lighttpd时,每次都会正常运行。 我不知道为什么以及如何解决它。

这是我的配置。

$SERVER["socket"] == ":80" {

$HTTP["host"] == "xxx.xxx.xxx.xxx" {
    server.document-root = "/var/www/public_html"
    server.errorlog = "/var/www/public_html/logs/error.log"
    accesslog.filename = "/var/www/public_html/logs/access.log"
    compress.cache-dir = "/var/www/public_html/cache"
}

$HTTP["host"] == "sub.domain.com" {
    server.document-root = "/var/www/public_html"
    server.errorlog = "/var/www/public_html/logs/error.log"
    accesslog.filename = "/var/www/public_html/logs/access.log",
    compress.cache-dir = "/var/www/public_html/cache"
}
index-file.names   = ( "index.php", "index.html", "index.htm", "default.htm" )
url.rewrite-if-not-file = (
         "^/image(.*)" => "/image-api.php$1",
         "^/go/([a-zA-Z0-9_-]+)" => "/index.php?go=$1",
         "^/oembed(.*)" => "/oembed_provider/index.php$1",
         "^/player$" => "/library/plugin/video-player/player.swf",
         "^/v(.*)" => "/cvd.php$1",
         "^/me" => "/user.php",
         "^/@(.*)\?(.*)" => "/profile.php?indentity=$1&$2",
         "^/@(.*)" => "/profile.php?indentity=$1",
         "^/url?g=(.*)" => "/url.php?g=$1",
         "^/social_auth/(.*)" => "/partner_api/$1.php",
         "^/c/(.*)" => "/view.php?view=$1",
         "^/u/(.*)" => "/profile.php?indentity=$1",
         "^/project/(.*)" => "/section.php?page=$1",
         "^/min/(.*)" => "/mini/index.php$1",
         "^/src/(.*)" => "/src/$1",
         "^/library/(.*)" => "/library/$1",
         "^/\?(.*)" => "/index.php?$1",
         "^/(.*)\?(.*)" => "/page.php?p=$1&$2",
         "^/(.*)" => "/page.php?p=$1"
        )

$HTTP["host"] == "domain.org" {
url.redirect = ("/(.*)$" => "https://domain.com/$1")
}

$HTTP["host"] == "domain.info" {
url.redirect = ("/(.*)$" => "https://domain.com/$1")
}

$HTTP["host"] == "domain.net" {
url.redirect = ("/(.*)$" => "https://domain.com/$1")
}

}

1 个答案:

答案 0 :(得分:1)

FAQ开始,看起来有几种可能性:

  

我收到错误"没有指定输入文件"在尝试使用PHP时

     

可悲的是,此错误消息可能意味着很多事情。    一个常见的解释尝试:PHP无法找到或打开它的文件   应该解析。

     

这可能有很多原因:

     
      
  • 你忘记了   在你的php.ini中添加' cgi.fix_pathinfo = 1''文件。请参阅中的评论   PHP docs。这里的问题是环境变量   SCRIPT_FILENAME未传递给PHP。
  •   
  • 确保没有设置   php.ini 中的 doc_root或userdir,或者如果你已经设置了它,请确保它   具有正确的值(doc_root应该匹配lighttpd' s   本例中为server.document-root选项)
  •   
  • 如果设置了open_basedir,请make   确保所请求的文件位于其中一个目录之下   指定那里。在过去PHP解析的文件不在里面   open_basedir也是如此,但这个安全问题已得到解决(in   php-5.2.3左右)。
  •   
  • 如果您使用不同的权限运行PHP   比lighttpd(spawn-fcgi与-u / -g,execwrap,suexec,...),检查   PHP可以真正读取文件
  •   
     

如果您无法找到/修复   问题,你可以使用strace来查看它是否是(OS相关的)权限   问题(注意stat *(... YOURFILE ...)= RETURNCODE)。它可能   有助于将max-procs设置为1和PHP_FCGI_CHILDREN(请参阅fastcgi   在这种情况下,你可以轻松地将strace附加到   正确的php-cgi进程。