登録 - どのユーザーが現在のphpスクリプトを実行しているのか、どうすればわかりますか?




新着 情報 cms フリー (4)

サーバーでスクリプトを実行したときに、どのユーザーでphpスクリプトが実行されているかを判断するにはどうすればよいですか。 それは偶然にapacheまたはphpmyadminと同じユーザの元で実行されていますか? 私の質問は間違って組み立てられているかもしれませんが、私は/ varの中の異なるフォルダに適切なパーミッションを設定するためにどのユーザーを知りたいのです。


「whoami」は使わないでください。 あなたがプロセスを実行するとき、ユーザはスクリプトの実行中に必ずしも有効なユーザと同じではないでしょう。 しかし、いずれにせよ "id"はもっと有用な情報を提供するでしょう。 代わりにget_current_user()を呼び出してください。 とても簡単!


whoami実行します。

<?php echo exec('whoami'); ?>

これを使って:

echo get_current_user();

それはこの答えが実際にあなたが望むことをしていないように見えるのでコメントを読むことを忘れないでください。


利用可能なposix関数がある場合(ほとんどのLinuxベースの環境でデフォルトで有効になっている)、 posix_geteuidposix_geteuidを使用して(少なくともWindows以外の環境では)ユーザー名を取得できます。

$pwu_data = posix_getpwuid(posix_geteuid());
$username = $pwu_data['name'];

もう1つの(より高価な)方法は、whoamiを実行するためにexecのようなシェル実行関数を使用することです。

$username = exec('whoami');

あるいはバッククォートでさえも(ただし、改行を切り捨てる必要があるかもしれませんが):

$username = `whoami`;

私は個人的にシェルで(コマンドラインで)実行されるPHPスクリプトのスクリプトを実行しているユーザーのユーザー名を取得する必要があるだけでした。 通常、Webサーバーが処理している要求に対する応答を構築するプロセスで実行されるスクリプトは、www-data、apacheなどのWebサーバーユーザーとして実行されます。Apacheでは、apache /を実行するユーザーhttpdプロセスはUserディレクティブで設定されUser

重要な注意: get_current_userはスクリプトを実行しているユーザーのユーザー名をあなたに与えませんが、代わりにスクリプトのOWNERをあなたに与えます。 ここでの答えのいくつか(適切に下げられた)はget_current_userを使うことを提案していますが、それはあなたに現在のスクリプトを実行しているユーザーのユーザー名を与えることはありません。





apache