Как узнать, какой пользователь запускает текущий PHP скрипт?

Как определить, с каким пользователем работает php script, когда я запускаю script на сервере? Он работает под тем же именем, что и apache или phpmyadmin? Мой вопрос, возможно, ошибочно обрамлен, но я хочу знать, какого пользователя, чтобы я установил соответствующее разрешение для разных папок в/var

Ответ 1

Выполнить whoami:

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

Ответ 2

Если у вас есть функции posix (включено по умолчанию), вы можете использовать posix_geteuid и posix_getpwuid, чтобы получить имя пользователя (по крайней мере, в не-Windows-средах):

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

Другой (более дорогой) способ сделать это - использовать функцию выполнения оболочки, например exec, для запуска whoami:

$username = exec('whoami');

или даже backticks (хотя вам может понадобиться обрезать строку):

$username = `whoami`;

Мне лично только когда-либо нужно было получить имя пользователя, использующего сценарии script для PHP, которые запускаются в оболочке (в командной строке). Как правило, скрипты, которые запускаются в процессе создания ответа на запрос, который обрабатывает веб-сервер, будут выполняться как пользователь веб-сервера, такие как www-data, apache и т.д. В Apache пользователь, который запускает apache/Процессы httpd задаются с помощью директивы User.

Ответ 3

Не используйте "whoami". Когда вы выполняете процесс, пользователь не обязательно будет таким же, как и эффективный пользователь во время работы script. Но в любом случае "id" предоставит гораздо более полезную информацию. Вместо этого вызовите get_current_user(). Так просто!

Ответ 4

Используйте это:

echo get_current_user();

Обязательно прочитайте комментарии, потому что похоже, что этот ответ фактически не делает то, что вы хотите.

Ответ 5

Используйте это:

$_SERVER['REMOTE_USER'];

эта переменная может быть установлена ​​или не установлена.