上次我使用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")
}
}
答案 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进程。