こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Linuxで画像がアップロードできない

いつもお世話になっております。

PHP初心者です。

現在、Linuxでサーバー構築をしているのですがWindowsでは問題の無かった画像のアップロードができません。

WindowsではXAMPP1.7.3を使用していました。

LinuxはCentOS5.4でXAMPP for Linux1.7.4を使用しています。

Windowsでは出ない以下のエラーが出ます。

●Warning: move_uploaded_file(./book_picture/digi.jpg) [function.move-uploaded-file]: failed to open stream: 許可がありません in /opt/lampp/htdocs/sample23.php on line 24

●Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpGDHAL8' to './book_picture/digi.jpg' in /opt/lampp/htdocs/sample23.php on line 24

php.iniのfile_uploadsはOnになっています。

php.iniのupload_max_filesize とpost_max_sizeは2Mと8Mになっています。

php.iniのupload_tmp_dirは設定されていないのでデフォルトの場所になっていると思います。

apacheを実行しているユーザで書き込みできなくなっているのでしょうか?一般ユーザではなく

rootで入っていっるのですが。

よろしくお願いします。

投稿日時 - 2011-02-09 02:14:49

QNo.6508821

すぐに回答ほしいです

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

> ●Warning: move_uploaded_file(./book_picture/digi.jpg) [function.move-uploaded-file]: failed to open stream: 許可がありません in /opt/lampp/htdocs/sample23.php on line 24

このメッセージからすると、文字通り

> apacheを実行しているユーザで書き込みできなくなっているのでしょうか?

が原因でしょう。

WWWサーバ(apache)は、「ユーザー apache」の権限で動いています。
ですから、そのWWWサーバの元で動くPHPプログラムからファイルを作成(書き込み)を行うためには、
ディレクトリ 「book_picture」は「ユーザー apache」が書き込むことができるようにしなければなりません。

(Windows の場合、デフォルトのパーミッション設定では書き込めるようになっているため、問題になりませんが、
UNIX系OSでは、デフォルトではディレクトリの所有者以外の権限ではファイルの書き込みが出来なくなっているのが普通です)

方法は2択
・ディレクトリ「book_picture」の所有者を apache にする
・ディレクトリ「book_picture」のパーミッションを777にする
このどちらかの設定をすればいけます。

投稿日時 - 2011-02-09 04:13:02

お礼

回答有難うございます。

ディレクトリ「book_picture」のパーミッションを777を設定し無事アップロードできました。

投稿日時 - 2011-02-09 23:19:51

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問