Tom*_*ski 12 log-files fastcgi lighttpd mod-fastcgi
我有一个启用了 Lighttpd 和 fastcgi 的 Centos 5 系统。它记录访问但不记录错误。我有内部服务器错误 500 并且日志中没有信息,当我尝试打开不存在的文件时 - 错误日志中也没有信息。如何正确启用它?
下面是我启用的模块列表:
server.modules = (
"mod_rewrite",
"mod_redirect",
"mod_alias",
# "mod_access",
# "mod_cml",
# "mod_trigger_b4_dl",
# "mod_auth",
"mod_status",
"mod_setenv",
"mod_fastcgi",
# "mod_webdav",
# "mod_proxy_core",
# "mod_proxy_backend_fastcgi",
# "mod_proxy_backend_scgi",
# "mod_proxy_backend_ajp13",
# "mod_simple_vhost",
# "mod_evhost",
# "mod_userdir",
# "mod_cgi",
# "mod_compress",
# "mod_ssi",
# "mod_usertrack",
# "mod_expire",
# "mod_secdownload",
# "mod_rrdtool",
"mod_accesslog" )
Run Code Online (Sandbox Code Playgroud)
下面是调试的设置:
## enable debugging
#debug.log-request-header = "enable"
#debug.log-response-header = "enable"
#debug.log-request-handling = "enable"
debug.log-file-not-found = "enable"
#debug.log-condition-handling = "enable"
Run Code Online (Sandbox Code Playgroud)
设置错误和访问日志的路径:
## where to send error-messages to
server.errorlog = "/home/lxadmin/httpd/lighttpd/error.log"
#### accesslog module
accesslog.filename = "/home/lxadmin/httpd/lighttpd/ligh.log"
Run Code Online (Sandbox Code Playgroud)
fastcgi 的设置:
fastcgi.debug = 1
fastcgi.server = ( ".php" => ((
"bin-path" => "/usr/bin/php-cgi",
"socket" => "/tmp/php.socket",
"max-procs" => 12,
"bin-environment" => (
"PHP_FCGI_CHILDREN" => "2",
"PHP_FCGI_MAX_REQUESTS" => "500"
)
)))
Run Code Online (Sandbox Code Playgroud)
在包含的配置文件中,我有:
server.errorlog = "/home/httpd/mywebsite.com/stats/mywebsite.com-error_log"
Run Code Online (Sandbox Code Playgroud)
什么是日志文件:
/home/httpd/mywebsite.com/stats/
-rw-r--r-- 1 apache apache 5173239 May 16 11:34 mywebsite.com-custom_log
-rwxrwxrwx 1 root root 0 Mar 27 2009 mywebsite.com-error_log
/home/lxadmin/httpd/lighttpd/
-rwxrwxrwx 1 apache apache 2184 Apr 22 22:59 error.log
-rwxrwxrwx 1 apache apache 6088621 May 16 11:26 ligh.log
Run Code Online (Sandbox Code Playgroud)
我给了错误日志 chmod 777 以尝试检查它是否是问题,但显然不是。
所以我的问题是:如何启用错误日志?
您的 error_log 似乎配置良好。
您是否尝试过 lsof 您的 lighttpd 进程以查看它是否打开了 error_log?
lsof -p `pidof lighttpd`
Run Code Online (Sandbox Code Playgroud)
另一方面,尝试在强制发生内部错误的同时跟踪相同的进程:
strace -o strace.out -p `pidof lighttpd`
Run Code Online (Sandbox Code Playgroud)
看看strace.out。这不仅有助于发现未写入 error_log 的原因,还有助于调试内部服务器错误问题本身。
将相同的“配方”应用于 fastcgi 进程。我的猜测是这与 lighttpd 和 fastcgi 进程之间的连接失败有关。
希望这可以帮助。