2012-06-18 3 views
10

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

+5

Googling 'php define user 'предоставит вам необходимую информацию –

+0

+1 yfgi .... (http://www.php.net/manual/en/function.get-current-user.php#57624) – Wrikken

+0

Вам нужно будет предоставить дополнительную информацию, чтобы помочь вам здесь, я боюсь. – crmpicco

ответ

20

Execute whoami:

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

Хмм второй человек вниз после того, как он был отредактирован. В его нынешнем виде это работает, см. Http://stackoverflow.com/questions/7771586/how-to-check-what-user-php-is-running-as – jpiasetz

+1

Хехе, отредактировал его только для того, чтобы удалить мой нисходящий (он заблокирован через определенное время ..) – Wrikken

+0

Спасибо :). Я на самом деле не жаловался на тебя. Вы были правы. – jpiasetz

-4

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

$_SERVER['REMOTE_USER']; 

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

+3

Это не чего хочет OP. Он хочет знать пользователя * system * –

7

если у вас есть posix functions доступны (по умолчанию включена), то вы можете использовать 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 задаются с помощью директивы User.

-3

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

echo get_current_user(); 

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

+5

Это на самом деле «владелец текущего PHP-скрипта» по http://php.net/manual/en/function.get-current-user.php –

0

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