[PHP-users 20827]ファイル・アップロードができない

Uesugi Toshiko toshi-ue @ jcom.home.ne.jp
2004年 3月 17日 (水) 18:58:50 JST


植杉と申します。

PHP初心者です。
ファイル・アップロードができなくて困っています。
Webや本で色々探してみましたが、うまく見つかりませんでしたので、投稿いたします。


1)環境

OS: Vine Linux V2.6r4
Apache: apache-1.3.27(OS付属のrpm)
PHP: php-4.2.3-multibyte.tar.gzをphp-4.2.3-multibyte.patchを当てた後で
   コンパイル
PHPのconfigure
./configure --with-mysql=/usr --enable-track-vars --with-apxs=/usr/sbin/apxs 
--enable-mbstring --enable-mbregex --with-gettext --enable-mbstr-enc-trans 
--enable-magic-quotes --with-config-file-path=/etc --with-gd --with-zlib


2)php.ini、httpd.conf

php.ini-distを、「upload_tmp_dir」と「session.save_path」と日本語の表示関係を
変更した位です。
最初に英語版のPHP4.2.Xがrpmでインストールされていて(私はこのマシンの管理者ではない)、
これをeraseして、php-4.2.3をコンパイルしました。
httpd.confはserver名を入れた位です。
(php関係は設定されていました)。


3)アップロードの方法

ごく普通の下記
<form method="post" action="up.php" enctype="multipart/form-data">
<input type="file" name="upload_file">
<input type="submit" value=" 送信 ">


4)現象

エラーメッセージ等は何も出ません。
actionで起動される「up.php」で、$_FILES ['upload_file']['name']を出力させると、
アップロードしようとするファイル名だけが入ります。
日本語ファイル名でもきちんと表示されます。
$_FILES ['upload_file']['tmp_name']を表示させると「/tmp/php/phpUlCB9K」
などとなります。
しかし、/tmp/phpには「phpUlCB9K」なるファイルは入りません。

/etc/php.iniは「file_uploads = On」「upload_tmp_dir = /tmp/php」とし、
/tmp/phpの「owner.group」は「apache.apache」にしてあります。
(「ps」コマンドで確認すると、httpdは「apache.apache」)
「session.save_path = /tmp/php」にしてあり、セッション情報はきちんと
/tmp/phpに入りますが、アップロードしようとするファイルは/tmp/phpに入りません。
当然、php.iniを変更した後は、httpdを再起動しています。

気になるのは、php.iniで変更した部分はきちんと「phpinfo()」に反映されているのに、
「file_uploads = On」は「phpinfo()」だと「file_uploads = 1」となってしまいます。
他にも「allow_url_fopen = On」が「allow_url_fopen = 1」に、
「;always_populate_raw_post_data = On」が「always_populate_raw_post_data = 0」に
なってしまいます。
ちなみに、「file_uploads = Off」にすると、「phpinfo()」だと
「file_uploads = no value」となってしまいます。
configureオプションを変えたりして、何度かコンパイルしてみましたが、
やはりuploadされません。
パッチを当てずにコンパイルをしてみましたが、結果は変わりません。

よろしくご教授お願いいたします。


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