PHPでファイルの所有者とスクリプト実行者の取得

作成日:2018-08-02, 更新日:2018-08-10

基本

ユーザーIDを取得してから、ユーザーの詳細を「posix_getpwuid()」で取得する

var_dump( posix_getpwuid(ユーザーID) );
//Array (
//    [name] => 〇〇〇
//    [passwd] => x
//    [uid] => 〇〇〇
//    [gid] => 〇〇〇
//    [gecos] =>
//    [dir] => 〇〇〇
//    [shell] => 〇〇〇
//)

※サーバによっては戻り値に違いがあるかもしれない。

スクリプト実行者の取得

・「posix_geteuid()」でスクリプト実行者のID取得
・「posix_getpwuid()」で詳細取得

var_dump( posix_getpwuid(posix_geteuid()) );

ファイル所有者の取得

・「fileowner($path)」でファイル所有者のIDを取得
・「posix_getpwuid()」で詳細取得

$path = ファイルのPATH;
var_dump( posix_getpwuid(fileowner($path)) );

スクリプト実行者がファイル所有者のときパーミッションを書き換える

$path = ファイルPATH;
if ( posix_geteuid() == fileowner($path) ) {
  // スクリプト実行者とファイル所有者が同じ
  chmod($path, 0664);
}