Как определить, с каким пользователем работает php script, когда я запускаю script на сервере? Он работает под тем же именем, что и apache или phpmyadmin? Мой вопрос, возможно, ошибочно обрамлен, но я хочу знать, какого пользователя, чтобы я установил соответствующее разрешение для разных папок в/var
Как узнать, какой пользователь запускает текущий PHP скрипт?
Ответ 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'];
эта переменная может быть установлена или не установлена.