Как проверить, какой пользователь php работает? - PullRequest
94 голосов
/ 14 октября 2011

Мне нужно определить, работает ли php как никто.Как мне это сделать?

Есть ли другие имена для "никто"?«Апач»?Любые другие?

Ответы [ 16 ]

0 голосов
/ 23 мая 2019

Вы можете использовать эти команды:

<? system('whoami');?>

или

<? passthru('whoami');?>

или

<? print exec('whoami');?>

или

<? print shell_exec('whoami');?>

или

<? print get_current_user();?>
0 голосов
/ 13 ноября 2018
<?php phpinfo(); ?>

сохраните как info.php и

откройте info.php в вашем браузере

ctrl + f и введите любой из них:

APACHE_RUN_USER
APACHE_RUN_GROUP
user/group

youможет видеть пользователя, и группа apache работает как.

0 голосов
/ 04 октября 2018
$user = $_SERVER['REMOTE_USER'];

http://php.net/manual/en/reserved.variables.server.php

Аутентифицированный пользователь

0 голосов
/ 26 мая 2017

Предложение

Немного поздно, но, несмотря на то, что это обходной путь, это решает требование, так как оно работает просто отлично:

<?
    function get_sys_usr()
    {
        $unique_name = uniqid();  // not-so-unique id
        $native_path = "./temp/$unique_name.php";
        $public_path = "http://example.com/temp/$unique_name.php";
        $php_content = "<? echo get_current_user(); ?>";
        $process_usr = "apache";  // fall-back

        if (is_readable("./temp") && is_writable("./temp"))
        {
            file_put_contents($native_path,$php_content);
            $process_usr = trim(file_get_contents($public_path));
            unlink($native_path);
        }

        return $process_usr;
    }


    echo get_sys_usr();  // www-data
?>


Описание

Выделение кода выше не является точным, скопируйте и вставьте его в свой любимый редактор и просмотрите как код PHP, либо сохраните и протестируйте его самостоятельно.

Как вы, вероятно, знаете, get_current_user() возвращает владельца "текущего запущенного скрипта" - поэтому, если вы не "забросили" скрипт на сервере пользователю веб-сервера, он, скорее всего, будет "никто" или если пользователь-разработчик существует в той же ОС, он будет отображать это имя пользователя.

Чтобы обойти это, мы создаем файл с текущим запущенным процессом. Если вы просто require() это в текущий запущенный скрипт, он вернет то же самое, что и родительский скрипт, как упомянуто; поэтому нам нужно выполнить его как отдельный запрос, чтобы он вступил в силу.

Процесс потока

Чтобы сделать это эффективным, рассмотрите возможность запуска шаблона проектирования, который включает в себя «режим времени выполнения», поэтому, когда сервер находится в «режиме разработки или тестовом режиме», только тогда он может запустить эту функцию и сохранить свои выходные данные где-нибудь во включении, - или просто текст или база данных, или что-то еще.

Конечно, вы можете изменить некоторые особенности кода выше, если хотите сделать его более динамичным, но логика такова:

  • определить уникальную ссылку для ограничения помех другим пользователям
  • определить локальный путь к файлу для записи временного файла
  • определить публичный URL / путь для запуска этого файла в своем собственном процессе
  • написать временный php-файл, который выводит имя владельца скрипта
  • получить вывод этого скрипта, сделав запрос к нему
  • удалите файл, так как он больше не нужен, или оставьте его, если хотите
  • возвращает результат запроса в качестве возвращаемого значения функции
0 голосов
/ 11 октября 2016
$_SERVER["USER"]

$_SERVER["USERNAME"] 
0 голосов
/ 03 июня 2016

Я обычно пользуюсь

<?php echo get_current_user(); ?>

Буду рад, если вам это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...