phpについて


あるphpを作りました。
フォームからファイルをアップするタイプの物です。

これを2つ同一サーバ内に設置したのですが
一つは正常に動きますが、一つは正常に動きません。
ファイルがアップできない状態です。
ファイルサイズがほぼ0に近いファイルでもアップできません。

下記のようにしているのですが、aでは正常で、bではエラーになります。
原因と対策を教えてください。

エラーメッセージはこちらです。
Warning: move_uploaded_file(./xxx.txt): failed to open stream: Permission denied in /xxx/hoge/b/index.php on line 123
Warning: move_uploaded_file(): Unable to move '/tmp/abcde' to './xxx.txt' in /xxx/hoge/b/index.php on line 123

ファイルはそれぞれ、a、b、の直下にアップしようとしています。
a、bのパーミッションは705にしています。

/hoge/a/index.php
/hoge/a/
/hoge/b/index.php
/hoge/b/

よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:2009/10/12 23:25:06
  • 終了:2009/10/19 23:30:03

回答(1件)

id:isogo45 No.1

isogo45回答回数31ベストアンサー獲得回数32009/10/12 23:40:03

ポイント60pt

サーバーの設定(apacheなど)によっても異なるとは思いますが、ファイルを保管するディレクトリーのパーミッションを707あるいは777にしてみてください。

ファイルを保管できない場合の多くはディレクトリーのオーナー(ユーザー)、あるいはパーミッション関係のトラブルです。

aとbで異なる理由はこれだけの情報ではわかりませんがディレクトリーの属性が同じで「Permission denied」ということは、一番可能性があるのはディレクトリーの所有者(オーナー、ユーザー)が異なっている可能性が考えられます。

ところで、ファイルのアップロード保管場所とプログラムなどは同じディレクトリーにしないほうがよいと思います。何がアップされるかわからないしアップされたものがweb上で実行されることになってしまうと非常にまずいことが起こると思います。

id:web2009

> 707 or 777

そうですよね。

そう思ってそうしたのですが、同じディレクトリに index.php が置いてあり、

707 or 777 にするとこの index.php が動かなくなってしまうんです。

> ファイルのアップロード保管場所とプログラムなどは同じディレクトリーにしないほうがよいと思います。

そうですよね。

今回のこれは管理者用なので良いかなと思いましてそうしたのですが...

やはりそれでも別にするべきなのでしょうか。

> 多くはディレクトリーのオーナー(ユーザー)、あるいはパーミッション関係のトラブル

私もそうは思っているのですが.....

いま試すことができないので明日確認します。

ありがとうございました。

2009/10/12 23:47:52

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません