• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ファイルのアップロードができません)

ファイルのアップロードができない?初心者のためのPHPファイルアップロードのチャレンジ

このQ&Aのポイント
  • 初心者のためのPHPファイルアップロードのやり方を簡単に教えてください。
  • PHPのCGIと比べてファイルのアップロードや画像の処理が簡単なので、試してみたのですが上手くいきません。
  • ファイルをアップロードしても何も表示されず、どうすればいいのか分かりません。PHPのバージョンは4.34です。助けてください!

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

$_FILESが空だという事はつまりファイル自体が送られていませんね。試しに同じコードを自分の使ってる開発サーバーにアップしてテストしてみましたが、こちらの環境ではちゃんと$_FILESに値が入っていました。 ・Send fileボタンを押すと画面は更新されるわけですよね? ・プログラム上半分のHTML部分は間違いないですか?余計なスペースなど入ってないですよね。 少なくともスクリプトの問題ではないですね。PHPの設定はどうなっているんでしょうか?いじれるんですか?例えばfile_uploads、post_max_sizeやupload_max_filesizeが0になってるなんて事はありませんか?これは <? phpinfo(); ?> という1行だけのスクリプトをアップロードして表示させて、挙げた項目の値を確認して下さい。これが0になっている場合は、php.iniで設定を変更してあげないといけません。

yamatatuo
質問者

お礼

わざわざ実際に試して頂いて、とても感謝しております。励みになります。ありがとうございます。 >Send fileボタンを押すと画面は更新されるわけですよね? はい。送信後、ブラウザの「中止」ボタンが一瞬だけアクティブになります。 >プログラム上半分のHTML部分は間違いないですか?余計なスペースなど入ってないですよね。 下のようになっていますが、大丈夫だと思います。 ************************ <HTML> <HEAD> <TITLE>PHPサンプル</TITLE> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </HEAD> <BODY bgcolor="#FFFFFF"> <CENTER> <form enctype="multipart/form-data" method="post"> Upload File:<input name="userfile" type="file"> <input type="submit" value="Send File"> </form> <pre> ************************ あと、php.iniの設定は、全て問題ありませんでした。 file_uploads=on post_max_size=8M upload_max_filesize=2M ※試しに送信してたファイルは30kb程度です upload_tmp_dirが「no value」になってるのが少し気になりましたが、この状態だとスクリプトのあるディレクトリが指定されるんですよね? 問題は解決してませんが、php.iniを閲覧する方法等、すごく参考になりました。ありがとうございました。 またしばらく格闘してみます!

その他の回答 (4)

回答No.5

windowsでもダメ、macでもダメとなると、あとはサーバーの設定なのかな。どこかのレンタルサーバーを使用しているのでしょうか?その業者に問い合わせてみるしかないような気がします。

yamatatuo
質問者

お礼

レス遅くなってすみません。 私も、一度レンタルサーバーの管理人に問い合わせた方がいいかと思い始めてたところです。 ちょっと今日は忙しいので明日にでもメール送ろうと思います。 何度もアドバイスありがとうございましたm(_ _)m

回答No.4

謎ですねぇ。 >upload_tmp_dirが「no value」になってるのが少し気になりましたが、この状態だとスクリプトのあるディレクトリが指定されるんですよね? いいえ、省略された場合はそのOSが認識しているテンポラリディレクトリを使います。不安であれば、これを指定してみたらどうでしょうか? ちなみに他のパソコンやブラウザでやってもだめですか?可能であれば知人等にURLを教えてテストしてもらったらどうでしょうか。

yamatatuo
質問者

お礼

回答ありがとうございます。 >いいえ、省略された場合はそのOSが認識しているテンポラリディレクトリを使います。不安であれば、これを指定してみたらどうでしょうか? なるほど、参考になります。 試しに下のようなスクリプトでupload_tmp_dirを設定しようとしてみたのですが、falseが帰ってきてしまいました。ユーザーには設定できないんだろうと思います(ほとんど手探り&Google頼みで作業してるので、ちょっと自信無いですが^^; スクリプト******************* var_dump(ini_set('upload_tmp_dir','/usr/tmp')); var_dump(ini_get('upload_tmp_dir')); 結果********************** bool(false) bool(false) ************************ >ちなみに他のパソコンやブラウザでやってもだめですか?可能であれば知人等にURLを教えてテストしてもらったらどうでしょうか。 会社のMacとWindowsで試してみましたが、どちらも結果は同じでした。今晩、自宅でも試してみようと思います。 なかなか問題は解決しませんが、後々も役立ちそうな知識がいろいろ増えたと思います。ありがとうございました!

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.3

テストでローカルで走らせて見ましたが、問題なく動きました。 なんなんでしょうね?

yamatatuo
質問者

お礼

お試しくださってありがとうございます。 てっきり私の経験不足による、ごく初歩的な問題だろうと思ってたのですが、そうでもないのかもしれませんね。

  • vakua
  • ベストアンサー率10% (1/10)
回答No.1

そのphpが存在しているディレクトリの第三者の書き込み属性が不許可になってはいませんか?

yamatatuo
質問者

お礼

回答ありがとうございます。 再度確認してみましたが、書き込み属性は許可になっていました。 こんな短いスクリプトだから、原因はスクリプト自体じゃなくて、そういったところにありそうだとは思うのですが…。