dポイントプレゼントキャンペーン実施中!

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

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で入っていっるのですが。

よろしくお願いします。

A 回答 (1件)

> ●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にする
このどちらかの設定をすればいけます。
    • good
    • 0
この回答へのお礼

回答有難うございます。

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

お礼日時:2011/02/09 23:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!