

Mac Yosemite 上の Apache でローカルで動かしてます。  
PHPで以下のように実行ユーザーを表示してみると、

[code]

    echo get_current_user();
    
[/code]

すると"_www"になるんですが、テキストファイルを保存してみるとその所有者は"自分の名前"になっています。  
実行ユーザーと所有者が別々(グループも別々です)になるわけですが、これはどういう設定からなっていることなんでしょうか？  
ちなみに、対象フォルダのパーミッションは0755で、suEXECは有効になっていません。それと、PHP はモジュール版です。

* * *

追記  
実行したコードです。

[code]

    echo 'user:' . get_current_user() . '<br>';
    
    $file_handle = fopen("test.txt", "w");
    
    if($file_handle){
        $wr = fwrite($file_handle , "あいうえお\nかきくけこ");
    
        if($wr == FALSE){
            echo "fwrite 失敗<br>";
        }else{
            echo "fwrite 成功<br>";
        }
    
        fclose($file_handle);
    }else{
        echo "fopen 失敗<br>";
    }
    
[/code]

所有者、グループの確認は Finder の「右クリック - 情報を見る」からしました。  
その後、httpd.conf も見てグループも違っていると思ったということです。


CC BY-SA 3.0
2015-03-01T17:40:30.113
7291
2015-03-05T05:22:22.070
2015-03-02T06:09:51.887
8439
8439
question
php macos apache
PHPで保存したファイルの所有者について


ターミナルから設定ファイルを見るとこのようにでました

[code]

    $ cat /private/etc/apache2/httpd.conf | grep  -n "_www"
    181:User _www
    182:Group _www
    
[/code]


CC BY-SA 3.0
2015-03-01T20:41:03.503
7292
2015-03-01T20:41:03.503
4662
7291
answer


OS
X標準のapacheでmod_phpを有効にして、DocumentRootになっている/Library/WebServer/Documentsに上記スクリプトをおいて実行しましたが書き込みができませんでした。ディレクトリをchmod
777したところ実行できました。ファイルの所有者は_wwwでした。

ということで、少なくとも標準状態+最低限の変更では質問のような動作にはなりません。

一般論としてもapache+mod_php環境ではapacheの実行ユーザーでPHPスクリプトも実行されますので、上記動作に矛盾はありません。

ということで、その通りの動作になっていないと言うことはここに書いた以上の作業をされていると思いますがその詳細がわからないとこの回答が限界です。

また、「既存のファイルに書き込みを繰り返しているだけ」とか、「スクリプトが作成してるファイルと確認しているファイルが違う」とか、そういうところも疑ったほうがいいかとおもいます。


CC BY-SA 3.0
2015-03-05T05:22:22.070
7468
2015-03-05T05:22:22.070
5793
7291
answer