fedora core 11にはじめから入っているapacheに対して「httpd -k start」と入力しただけですが、
この状態から上記のファイルダウンロードを許可させる方法を教えてください。
[状況]
ダウンロード時に行った操作:ファイルの存在する場所を直接アドレスバーで入力しenter。「ダウンロード」を実行。指定した場所にダウンロードが開始されるが、0バイトのファイルが置かれるだけとなる。
[その他]
・ファイルサイズは小さい(数kバイト)です。
・document root上に配置したhtmlファイルは開くことができました。
・errorログには何も記載されておりません。
[実験環境]
同じサブネット上のPC2台で実験しております。
linuxサーバ:192.168.1.1
クライアント(windows):192.168.1.2
[apache バージョン]
httpd-2.2.15-1.fc11.1.i586
"/etc/mime.types" に以下の指定が記されているかどうか確認してください。
zip application/x-zip-compressed lzh application/x-lha mpg video/mpeg
これだけだと、apacheで問題が起きているのか、クライアント側で起きているのか分かりませんね。クライアント側で問題が起きてると予想しますがなんとも言えないですね。
まずは、fedora内からダウンロードしてみて、apacheの問題なのかクライアントの問題なのかを切り分けましょう。
fedora内から、wget http://192.168.1.1/PATH_TO_ZIP_FILE を実行し、ダウンロードできるかどうか試してみてください。
これが可能なら、クライアント側の問題でしょう。
その場合他のクライアントPCや、他のブラウザ、windows用のwget/curlなど、ダウンロード方法を変えたり、Virus Scanを一旦Offにして試してみたりして絞り込んでいくと良いでしょう。
もしfedora側からも不可能ならサーバ側の問題ということになりますが、apacheだけでこんな現象が起きるのはちょっと考えにくいですね。
Ubuntu10.04のデフォルト状態のapacheで、パーミッションを変えたり、日本語のフォルダを含むパスへのシンボリックリンクを使うとか、考えうる方法を試してみたけど、再現しないですね。
とりあえずは、閲覧できてる.htmlなファイルをコピーして拡張子を.zipとかに変えて、FiddlerやHttpFox, Wiresharkなどで、これら2つのファイルのダウンロード時の通信を比較してみては?
[root@localhost work]# wget http://192.168.1.1/a.zip
192.168.1.1:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 4727763 (4.5M) [application/zip]
`a.zip' に保存中
0% [ ] 0 --.-K/s 時間 0s
2010-09-05 18:19:03 (0.00 B/s) - 0 バイトで接続が終了しました。 再試行しています。
192.168.1.1:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 4727763 (4.5M) [application/zip]
a.zip が存在しています。
再試行しています。
192.168.1.1:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 4727763 (4.5M) [application/zip]
a.zip が存在しています。
再試行しています。
・・・以下繰り返しでした。
htmlファイルをzipに変えてみたところ、こちらはダウンロードできました。
htmlに名前だけ変えた場合でも、htmlをzip圧縮した場合でもできました。
[root@localhost work]# wget http://192.168.1.1/index.html.zip
192.168.1.1:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 85 [application/zip]
`index.html.zip' に保存中
100%[======================================>] 85 --.-K/s 時間 0s
2010-09-05 18:24:06 (4.89 MB/s) - `index.html.zip' へ保存完了 [85/85]
[root@localhost work]# ll
合計 12
元のファイルが悪いのかと思って別の動画ファイルをzip圧縮して配置しましたが、
こちらは0バイトでのダウンロードとなってしまいました。。
>> application/zip zip
という記述があったとのことですが、
AddType application//zip .zip
という具合にピリオドを付けても状況に変化はありませんか。
やってみましたが、変化はありませんでした。
/etc/mime.typesを書き換えてhttpd -k restartとしましたが。
ファイルのパーミッションは問題ないですか?
a.zip ファイルの UNIX 上のパーミッションを ls -l コマンドなどで表示させてみて、問題がないかを確認してみてください。
もしくは
chmod 444 a.zip
のようにして、とりあえず誰からも読めるようにしてみて確認してみてください。
また、エラーログではなく、access.log には何か残りませんか?
パーミッション確認しました。
当たりでした。。。
実はこの度DocumentRootのフォルダをCIFSマウントしていたのですが、
httpd.confに書かれている元のDocumentRoot上に設定し直すと問題なくできるようになりました。
マウントした場所でのパーミッションはこうなっておりました。
[root@localhost www]# ll
合計 10358064
-rwxrwSrwx 1 root root 4727763 2010-05-19 03:03 a.zip
・・・
ちなみにNTFSの共有フォルダ上をコンテンツのおき場所にすることはできないのでしょうか・・・
(chmod 444 a.zipとやっても変わりませんでしたし。。)
=======
追記
=======
こちらにかいてありました。
http://blog3.logosware.com/archives/543
EnableSendfile ディレクティブに関する設定だったみたいです。
書いてはありませんでした。
この設定は何でしょうか?
ちなみに書式は以下のような感じでした。
application/zip zip
追記:
httpd.confにこんな記述がありました。
<IfModule mod_mime.c>
AddType application/octet-stream mp4 m4v mov aac mp3 avi mpg
</IfModule>