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

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

 Wrikken18 июн. 2012 г., 20:02
 Wrikken19 июн. 2012 г., 00:43
@rambocoder Потому что этоso приличный этоso легко гуглить что значитsomeone очень ленивый ... :)
 Pekka 웃18 июн. 2012 г., 19:59
погуглитьphp determine user даст вам необходимую информацию
 goat18 июн. 2012 г., 20:20
почему все отрицательные? это довольно приличный вопрос.
 crmpicco18 июн. 2012 г., 20:14
Боюсь, вам потребуется предоставить дополнительную информацию, чтобы мы могли помочь вам в этом.

Ответы на вопрос(5)

Решение Вопроса

казнитьwhoami:

<?php echo exec('whoami'); ?>
 19 июн. 2012 г., 00:44
Хе-хе, отредактировал его только для того, чтобы можно было удалить мое пониженное голосование (оно блокируется через определенное время ..)
 26 сент. 2015 г., 15:57
Я предпочитаюid Командуйте сами, вы получите такой вывод:uid=1004(testsite) gid=1005(testsite) groups=1005(testsite),1004(sftp)
 19 июн. 2012 г., 00:58
Спасибо :). Я действительно не жаловался на твою. Вы были правы, лол.
 18 июн. 2012 г., 23:40
Хм второй человек понизил после его редактирования. В нынешнем виде это действительно работаетstackoverflow.com/questions/7771586/…
 01 дек. 2014 г., 08:51
Хотя это работает, это не особенно эффективное решение, и решение под ним, использующее posix_getpwuid (posix_geteuid ()), является более эффективным и способным работать на серверах с закрытой оболочкой exec.

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

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

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

$username = exec('whoami');

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

$username = `whoami`;

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

Важная заметка:get_current_user НЕ дает вам имя пользователя, запустившего скрипт, но вместо этого дает вам ВЛАДЕЛЬЦА скрипта. Некоторые из ответов здесь (соответственно, проголосовали) предлагают использоватьget_current_user, но это не даст вам имя пользователя, запустившего текущий скрипт.

Использовать этот:

$_SERVER['REMOTE_USER'];

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

 18 июн. 2012 г., 20:07
Это не то, что хочет ОП. Он хочет знатьsystem пользователь

Использовать этот:

echo get_current_user();

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

 01 дек. 2014 г., 08:52
На самом деле это «владелец текущего PHP-скрипта». согласноphp.net/manual/en/function.get-current-user.php

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

Ваш ответ на вопрос