ある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/
よろしくお願いします。
サーバーの設定(apacheなど)によっても異なるとは思いますが、ファイルを保管するディレクトリーのパーミッションを707あるいは777にしてみてください。
ファイルを保管できない場合の多くはディレクトリーのオーナー(ユーザー)、あるいはパーミッション関係のトラブルです。
aとbで異なる理由はこれだけの情報ではわかりませんがディレクトリーの属性が同じで「Permission denied」ということは、一番可能性があるのはディレクトリーの所有者(オーナー、ユーザー)が異なっている可能性が考えられます。
ところで、ファイルのアップロード保管場所とプログラムなどは同じディレクトリーにしないほうがよいと思います。何がアップされるかわからないしアップされたものがweb上で実行されることになってしまうと非常にまずいことが起こると思います。
> 707 or 777
そうですよね。
そう思ってそうしたのですが、同じディレクトリに index.php が置いてあり、
707 or 777 にするとこの index.php が動かなくなってしまうんです。
> ファイルのアップロード保管場所とプログラムなどは同じディレクトリーにしないほうがよいと思います。
そうですよね。
今回のこれは管理者用なので良いかなと思いましてそうしたのですが...
やはりそれでも別にするべきなのでしょうか。
> 多くはディレクトリーのオーナー(ユーザー)、あるいはパーミッション関係のトラブル
私もそうは思っているのですが.....
いま試すことができないので明日確認します。
ありがとうございました。