2012-01-05 4 views
3

PROBLEMPHPのMKDIR()と私はPHPを経由して自分のサーバーにファイルをアップロードしようとしているApacheの所有権の問題

。フォルダが存在しない場合、まずフォルダを作成しようとします。

mkdir($folder, 0700); 

私のスクリプトは、フォルダを作成しているが、Apacheは、フォルダ(およびファイル)の所有者であるので、私は私がアップロードされたファイルにアクセスすることはできません。

私は自分のサーバーでsafe_modeをオフにしています。私はまだこれのために道を見つけることができませんでした。

誰かが私を助けてくれたらうれしいです。

注: 0755を試しましたが、0777は何も変更されません。 Apacheは作成されたフォルダの所有者です。

+0

権限700は、非常に厳密です。 *唯一*のように、所有者はディレクトリで何かを行うことができます。だから、あなたが描いていることは期待される。 –

+0

http://stackoverflow.com/questions/2560762/php-mkdir-and-apache-ownershipをチェックしましたか? – j08691

+0

@ j08691;はい、私はすべてをチェックしました。私が述べたように、safe_modeはオフです。 @ジェイソンMcCrearyは、私が許可を変更する場合でも、何も変更、まだ 'apache'は、フォルダの所有者です。 – Revenant

答えて

2

suEXECまたはsuPHPを使用するようにWebサーバーを再構成することをお勧めします。このアプローチの欠点は、PHPをApache modではなくCGIモードで使用することです。私はこれがトラフィックの低中規模サイトで問題になるのを見たことはありません。主な利点は、スクリプトが所有者として実行され、スクリプトが作成する新しいディレクトリやファイルが自動的にそのユーザーに所有されることです。あなたの問題はない新しいディレクトリやファイル、あなたが目を詮索好きで読まれるべきではない何かを格納していないの作成をちょうどある場合

結局、その後、chmod($path, 0755);あなたの問題を解決します。

+0

私はchown()を試しました。私はむしろ安全に固執します。 – Revenant

+0

私は自分の答えを変えなければなりませんでした。chown()を実行するためには、rootとしてスクリプトを実行する必要がありました。 – Crontab

+0

私はそのような詳細でどのようにサーバーに対処するのか分かりません。私はこの周りに他の方法がないと思っています。 – Revenant

0

もちろんです。アップロードdirがすなわち、アクセス/ other書き込み可能でなければなりません:XX7:あなたが最初の場所で700にアクセス権を設定しないのはなぜ

// fill APPPATH with a suitable directoy name 

if (! file_exists(APPPATH . 'uploads')) 
{ 
    mkdir(APPPATH . 'uploads', 0757, TRUE); 
} 

7: owner permissions, ie: rwx 
5: group permissions, ie: rx 
7: other permissions, ie: rwx 
+0

フォルダを作成しても問題はありません。問題は、apacheがフォルダの所有者であることです。 – Revenant

+0

はい、apacheもアップロードされたファイルの所有者になります。ディレクトリ/フォルダを書き込み可能にし、他のユーザーがアクセスできるようにするだけです。 –

+0

これがうまくいかない場合、私は問題があなたのスクリプトの別の部分になければならないと思います。どのようにアップロードされたファイルにアクセスしていますか? –

0

? 755では「誰でも」あなたのファイルやフォルダを読むことができますが、ほとんどの場合、それは実際に受け入れられます。

+0

私の質問を更新します。私は成功しなかった755、777を試しました。 Apacheは作成された各フォルダの所有者です。 – Revenant

1

次のコードは、アクセス許可777(または任意の指定された許可)でディレクトリを作成します。

$oldumask = umask(0); 
mkdir($path, 0777); 
umask($oldumask); 
関連する問題