Как определить, с каким пользователем работает скрипт php, когда я запускаю скрипт на сервере? Он работает под тем же именем, что и apache или phpmyadmin? Мой вопрос может быть ошибочно обрамлен, но я хочу знать, какой пользователь так, чтобы я установил соответствующее разрешение для разных папок в / var
Выполнить whoami
:
<?php echo exec('whoami'); ?>
Если у вас есть доступные функции posix (включены по умолчанию), вы можете использовать posix_geteuid
и posix_getpwuid
для получения имени пользователя (по крайней мере, в не-Windows-средах) следующим образом:
$pwu_data = posix_getpwuid(posix_geteuid()); $username = $pwu_data['name'];
Другой (более дорогой) способ сделать это – использовать функцию выполнения оболочки, такую как exec для запуска whoami:
$username = exec('whoami');
или даже backticks (хотя вам может понадобиться обрезать линию):
$username = `whoami`;
Мне лично только когда-либо нужно было получить имя пользователя, использующего скрипт для скриптов PHP, которые запускаются в оболочке (в командной строке). Как правило, скрипты, которые запускаются в процессе создания ответа на запрос, который обрабатывает веб-сервер, будут выполняться как пользователь веб-сервера, такие как www-data, apache и т. Д. В Apache пользователь, который запускает apache / Процессы httpd задаются с помощью директивы User .
Не используйте «whoami». Когда вы выполняете процесс, пользователь не обязательно будет таким же, как и эффективный пользователь во время запуска скрипта. Но в любом случае «id» предоставит гораздо более полезную информацию. Вместо этого вызовите get_current_user (). Так просто!
Использовать это:
echo get_current_user();
Не забудьте прочитать комментарии, потому что похоже, что этот ответ фактически не делает то, что вы хотите.
Использовать это:
$_SERVER['REMOTE_USER'];
эта переменная может быть установлена или не установлена.