電子書籍の厳選無料作品が豊富!

Debian GNU/Linux etch Kernel-2.4.17 PowerPC環境で、
lighttpd-1.4.13 (ssl) をaptにてインストールしました。

# cat /etc/apt/sources.list
deb ftp://ftp.dti.ad.jp/pub/Linux/debian etch main contrib non-free
# apt-get install lighttpd mime-support

標準付属の lighttpd.conf のまま、telnetでアクセス

# telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GET / HTTP/1.0 <----- 入力

HTTP/1.0 200 OK
Connection: close
Content-Type: text/html
ETag: "1366873572"
Accept-Ranges: bytes
Last-Modified: Thu, 18 Feb 2010 01:27:22 GMT
Content-Length: 3586
Date: Thu, 18 Feb 2010 01:55:37 GMT
Server: lighttpd/1.4.13

Connection closed by foreign host.

レスポンスヘッダだけ吐いてファイル本文の転送を行なってくれません。
Firefoxで見ると、真っ白なページとなります。

# tail /var/log/lighttpd/error.log
2010-02-18 10:38:19: (log.c.75) server started
2010-02-18 10:38:32: (network_linux_sendfile.c.171) sendfile failed: Function not implemented 6
2010-02-18 10:38:32: (connections.c.589) connection closed: write failed on fd 6

ファイル送信で失敗している様です。

心当たりがある方は、お力をお貸しください。

A 回答 (1件)

エラーメッセージを見る限り、sendfileシステムコールを使ってファイル本文の転送を行おうとして、sendfileシステムコールが実装されていないために送信に失敗しているようです。

実際、ファイル本文の転送の時にlighttpdが正常な処理をしていないことがわかると思います。

lighttpd.confに次の設定を追加し、sendfileシステムコールではなく、writeシステムコールでファイルを送信するようにさせてはいかがでしょうか?
server.network-backend = "write"

...lightttpd 1.4.13のソースコードを見てこの設定をすれば何とかなりそうだと判断しただけで、本当にこれで治るかは保証できませんが。
    • good
    • 0
この回答へのお礼

早速のご回答、ありがとうございました。

ご指摘のとおり、/etc/lighttpd/lighttpd.confに
server.network-backend = "write"
を追記したところ、正常にファイル本文の転送を行うようになりました。

自分もhanabutakoさんのように、ソースコードを読んで自己解決できるよう努力せねばと実感しました。

本当にありがとうございました!

お礼日時:2010/02/19 09:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!