サーバー上でスクリプトを実行するときに、php スクリプトを実行しているユーザーを特定するにはどうすればよいですか? たまたま、apache や phpmyadmin と同じユーザーで実行されているのでしょうか? 私の質問は間違っているかもしれませんが、 /var のさまざまなフォルダーに適切な権限を設定するために、どのユーザーを知りたいですか
5 に答える
実行whoami
:
<?php echo exec('whoami'); ?>
利用可能なposix 関数がある場合(ほとんどの Linux ベースの環境ではデフォルトで有効になっています)、次のように and を使用して (少なくとも Windows 以外の環境では) ユーザーの名前を取得できposix_geteuid
ますposix_getpwuid
。
$pwu_data = posix_getpwuid(posix_geteuid());
$username = $pwu_data['name'];
別の (より高価な) 方法は、exec のようなシェル実行関数を使用して whoami を実行することです。
$username = exec('whoami');
またはバッククォート(ただし、改行を削除する必要がある場合があります):
$username = `whoami`;
個人的には、シェル (コマンドライン) で実行される PHP スクリプトのスクリプトを実行しているユーザーのユーザー名を取得するだけで済みました。通常、Web サーバーが処理しているリクエストへの応答を構築するプロセスで実行されるスクリプトは、www-data、apache などの Web サーバー ユーザーとして実行されます。Apache では、apache/ httpd プロセスはUserディレクティブで設定されます。
重要な注意:get_current_user
は、スクリプトを実行しているユーザーのユーザー名を提供するのではなく、スクリプトの所有者を提供します。ここでの回答の一部 (適切に反対票を投じたもの) は を使用することを提案してget_current_user
いますが、現在のスクリプトを実行しているユーザーのユーザー名はわかりません。
これを使って:
$_SERVER['REMOTE_USER'];
この変数は、設定される場合と設定されない場合があります。