2011-09-10 14 views
3

PHPを使用してフォルダを作成しようとしていて、別のフォルダを作成しようとしています。PHPフォルダのアクセス許可の問題

これは私が今

/home/site       (owner : user1) 

を持つディレクトリ構造であれば、私はディレクトリに/ホーム/サイトを

mkdir("/home/site/newdir",0777);  (user : apache) 

を使用してフォルダを作成/ newdirがが作成されますが、その利用者ディレクトリは「apache

今、実行中

mkdir("/home/site/newdir/anotherdir",0777); 

newdirの中に別のディレクトリを作成しないでください。

助けてください。私はその所有者の問題だと思う。 chmod()を使用してオーナーを変更することはできません。所有者は同じままです。

これは何が原因でしょうか?

EDIT:

<?php 
error_reporting(E_ALL); 

mkdir("./m",0777); // works 
mkdir("./m/v",0777); // doesnt work 

、ページ上のエラーなし。

var_dump(is_writeable("./m")) // returns bool(true) 

EDIT:これは修正されました。同じ問題に直面している可能性がある他の人にとっては、PHPのセーフモードが「オン」になっていたからです。それでも、セーフモードが正確に何をしているのかという理由を知っていないと、ネストされたディレクトリを作成することはできません。

しかし、今は動作します。読んでいただきありがとうございます。

+1

あなたは0777権限でディレクトリを作成しているが、これはパーミッションの問題であってはなりません。/home/site/newdirの中にディレクトリを作成しようとすると、PHPはエラーを表示しますか? – arnaud576875

+1

エラーが表示されますか? – Ikke

+0

エラーはありません。 var_dump(is_writeable( "./ m"))はtrueを返します。編集した投稿をチェックしてください。 –

答えて

1

mkdir()によって作成されたディレクトリのモードは、現在のumaskの影響を受けます。そのため、chmod()は機能しません。

試してみてください。

$old_mask = umask(0); 
mkdir("/home/site/newdir/anotherdir",0777); 
umask($old_mask); 
関連する問題