[PHP-users 24747] readfileにファイルサイズの上限はありますか

"鈴木孝征(Suzuki Takamasa)" takamasa @ thaliana.myhome.cx
2005年 3月 1日 (火) 14:37:18 JST


鈴木と申します。

readfile関数を使ってファイルをダウンロードさせることを考えています。しか
し、うまく動作しません。どこの設定を見直したらいいか教えてください。

環境
VineLinux 3.1
Apache 1.3.33
PHP 4.3.10

上記のソフトはすべてパッケージからインストールしています。
スクリプトの動作確認はtelnet 192.168.x.x 8000としてGET /index.php
HTTP/1.0またはGET /download.php HTTP/1.0としています。

Apacheの設定
/etc/httpd/conf.d/test.confを下記のように作成しました。

Listen 8000
<VirtualHost 192.168.x.x:8000>
    DocumentRoot /home/share/html/
    ServerName 192.168.x.x
</VirtualHost>

/home/share/html/index.php
<?php
	phpinfo();
?>
これにはアクセスできることを確認しました。

download.php
<?php
	$file1 = "/home/share/music/test1.mp3";
	$file2 = "/home/share/music/test2.mp3";
	readfile($file1);
?>

これが動作しません。下記のようになります。

[takamasa @ host html]$ telnet 192.168.5.1 8000
Trying 192.168.5.1...
Connected to 192.168.5.1.
Escape character is '^]'.
GET /download.php HTTP/1.0

Connection closed by foreign host.

一方download.phpを変更しreadfile($file2)とするとtest2.mp3の内容が表示さ
れます。

readfileに読ませるファイルによるものかと考え、いろいろ試した結果ファイル
のサイズが問題ではないかと考えています。(以下ls -lh test*の結果。一部省略)。
-rwxr--r-- 4.3M test1.mp3*
-rwxr--r-- 620k test2.mp3*

次にtest1.mp3を/home/share/html以下にコピーし、telnetして、GET
/test1.mp3 HTTP/1.0を実行してみると正常にダウンロードされました。おそら
くApacheが制限をしているのではないと考えました。

次にphp.iniの設定をみようと考え、grep -i limit /etc/php.iniとしました。
そしてmemory_limit = 8Mの行を見つけました。

PHPから出力したいファイルのサイズの上限はこれが決めているのでしょうか。
それとも他の設定はあるのでしょうか。わかるかた教えてください。


PHP-users メーリングリストの案内