apacheを起動させましたが、クライアント側からzip、lzh、mpgなどのファイルをダウンロードさせることができません。

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

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2010/09/05 21:30:42
  • 終了:2010/09/07 01:40:22

回答(4件)

id:tasklight No.1

tasklight回答回数323ベストアンサー獲得回数402010/09/05 22:04:08

ポイント23pt

"/etc/mime.types" に以下の指定が記されているかどうか確認してください。

zip     application/x-zip-compressed
lzh     application/x-lha
mpg     video/mpeg
id:dethanc

書いてはありませんでした。

この設定は何でしょうか?

ちなみに書式は以下のような感じでした。

application/zip zip


追記:

httpd.confにこんな記述がありました。

<IfModule mod_mime.c>

AddType application/octet-stream mp4 m4v mov aac mp3 avi mpg

</IfModule>

2010/09/05 22:47:15
id:t-wata No.2

t-wata回答回数82ベストアンサー獲得回数132010/09/06 00:06:49

ポイント80pt

これだけだと、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つのファイルのダウンロード時の通信を比較してみては?

id:dethanc

[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

  • rw-r--r-- 1 root root 0 2010-09-05 18:19 a.zip
  • rw-r--r-- 1 root root 85 2010-06-21 01:34 index.html.zip

元のファイルが悪いのかと思って別の動画ファイルをzip圧縮して配置しましたが、

こちらは0バイトでのダウンロードとなってしまいました。。

2010/09/06 00:39:41
id:tknrych No.3

tknrych回答回数84ベストアンサー獲得回数82010/09/06 00:11:48

ポイント22pt

>> application/zip zip

という記述があったとのことですが、

AddType application//zip .zip

という具合にピリオドを付けても状況に変化はありませんか。

id:dethanc

やってみましたが、変化はありませんでした。

/etc/mime.typesを書き換えてhttpd -k restartとしましたが。

2010/09/06 00:35:29
id:monyot No.4

monyo回答回数146ベストアンサー獲得回数182010/09/06 02:27:27

ポイント65pt

ファイルのパーミッションは問題ないですか?

a.zip ファイルの UNIX 上のパーミッションを ls -l コマンドなどで表示させてみて、問題がないかを確認してみてください。

もしくは

chmod 444 a.zip

のようにして、とりあえず誰からも読めるようにしてみて確認してみてください。

また、エラーログではなく、access.log には何か残りませんか?

id:dethanc

パーミッション確認しました。

当たりでした。。。

実はこの度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 ディレクティブに関する設定だったみたいです。

http://httpd.apache.org/docs/2.2/ja/mod/core.html

2010/09/07 01:37:51

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

  • Twitter Trackbacks 2010-09-05 21:37:57
  • RをCGI上で実行 コマンドの基本 R --vanilla --slave --args 12 &lt; test.R サンプルRスクリプト test.R args=commandArgs(trailingOnly=T) cat(args[1]); test.R に読み込みと実効権限をつけておけばよい. chmod a+x test.R ch
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません