Как узнать пользователя, под которым выполняется скрипт
Текущий рейтинг темы: 7.0000
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
Откуда: Москва Всего сообщений: 2994 Рейтинг пользователя: 79 Дата регистрации на форуме: 29 сен. 2001
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 8 сентября 2005 18:16
Вопрос такой: нужно узнать имя пользователя, под которым выполняется PHP-скрипт, причем предпочтительнее именно символьное имя, а не uid. Желательно также, чтобы это работало как в *nix, так и в Windows.
--- Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
| | |
wsx
Модератор раздела
Юниксойд, сетевик
Откуда: Казань Всего сообщений: 1074 Рейтинг пользователя: 28 Репутация пользователя: 1Дата регистрации на форуме: 14 янв. 2005
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 8 сентября 2005 19:01
http://ru.php.net/manual/en/function.posix-getlogin.php
posix_getlogin — Return login name
Description
string posix_getlogin ( void )
Returns the login name of the user owning the current process. See posix_getpwnam() for information how to get more information about this user. | | |
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
Откуда: Москва Всего сообщений: 2994 Рейтинг пользователя: 79 Дата регистрации на форуме: 29 сен. 2001
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 8 сентября 2005 19:23
Еще неплохо подходит функция get_current_user, как выяснилось.
--- Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
| | |
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
Откуда: Москва Всего сообщений: 2994 Рейтинг пользователя: 79 Дата регистрации на форуме: 29 сен. 2001
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 18 сентября 2005 1:04
Как выяснилось, применять эти функции малость небезопасно: некоторые уроды-хостеры запрещают их якобы из соображений безопасности. Впрочем, это касается по-моему, ситуаций, когда PHP работает в safe-mode.
--- Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
| | |
ph4n70m_d
Новичок
Всего сообщений: 1 Рейтинг пользователя: 0 Дата регистрации на форуме: 22 сен. 2005
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 22 сентября 2005 20:19
А поточнее моно?
Я так понял кто зашел и выполняет этот скрипт? так или нет?
Елси да моно попробовать через кукисы.
--- Я ни когда не отказываюсь от своих слов \m/,
| | |
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
Откуда: Москва Всего сообщений: 2994 Рейтинг пользователя: 79 Дата регистрации на форуме: 29 сен. 2001
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 22 сентября 2005 20:31
Нет, имелось в виду совершенно другое: я хотел узнать логин пользователя в системе, от имени которого запустился интерпретатор PHP. Соответственно, это сильно влияет на то, как ставить права доступа к файлам данных: если скрипт выполняется от имени какого-нибудь apache или nobody, то надо разрешать доступ всем (права 666), а если от пользователя-владельца скрипта (как на моем хостинге) - то только владельцу (600).
А логин пользователя, который вошел через Web-форму, можно запоминать действительно либо в cookies, либо в session (причем второе предпочтительнее), там все достаточно просто.
--- Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
| | |
AplHost
Новичок
Всего сообщений: 4 Рейтинг пользователя: 0
Дата регистрации на форуме: 18 мар. 2007
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 18 марта 2007 10:00
Если имеется ввиду под каким логин запускается php на сервере, то здесь ответ не однозначный.
Если php запущен как модуль к apache, то скрипт будет выполняться от пользователя nobody.
Такой подход используют большинство хостеров.
Однако есть еще suExec, это когда php работает как FastCGI.
В этом случае php запускается от владельца скрипта.
Проверить какой способ используется очень просто.
Если используется SuEXEC, то директивы php_flag и php_value в .htaccess работать не будут, и при заходе на сайт будет вываливаться 500 ошибка.
В этом случае можно создавать файл php.ini в корне сайта и настраивать интерпретатор через него. | | |
wsx
Модератор раздела
Юниксойд, сетевик
Откуда: Казань Всего сообщений: 1074 Рейтинг пользователя: 28 Репутация пользователя: 1Дата регистрации на форуме: 14 янв. 2005
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 20 марта 2007 11:20
AplHost
причём здесь это? Вопрос был о другом не много.
А теперь смотри сюды!
[q] Если php запущен как модуль к apache, то скрипт будет выполняться от пользователя nobody.[/q]
Не хера подобного. это по умолчанию так, но есть хитрые способы и напильники.
Не только при suexec можно запретить использование php_flag и php_value.
| | |
moscower
Новичок
Откуда: Москва Всего сообщений: 2 Рейтинг пользователя: 1
Дата регистрации на форуме: 19 июня 2007
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 19 июня 2007 11:49
Можно сделать так:
$user_info=posix_getpwuid(posix_getuid());
echo $user_info['name'];
| | |
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
Откуда: Москва Всего сообщений: 2994 Рейтинг пользователя: 79 Дата регистрации на форуме: 29 сен. 2001
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 19 июня 2007 15:01
Есть и более простая функция: get_current_user(), но проблема в том, что очень многие хостеры ее вносят в список запрещенных для вызова функций, что вызывает ошибку скрипта.
--- Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
| | |
moscower
Новичок
Откуда: Москва Всего сообщений: 2 Рейтинг пользователя: 1
Дата регистрации на форуме: 19 июня 2007
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 19 июня 2007 19:37 Сообщение отредактировано: 19 июня 2007 19:40
XXXX Pro написал: [q] Есть и более простая функция: get_current_user(), но проблема в том, что очень многие хостеры ее вносят в список запрещенных для вызова функций, что вызывает ошибку скрипта.[/q]
get_current_user — Gets the name of the owner of the current PHP script
То есть эта ф-ия показывает имя не пользователя, от имени которого выполняется скрипт, а пользователя - владельца файла скрипта.
Мой же пример покажет именно пользователя, от имени которого скрипт выполняется - то есть то - что автор и хотел узнать. | | |
Gram
Понечетный Участник Проекта
Откуда: здешний Всего сообщений: 566 Рейтинг пользователя: 14 Репутация пользователя: 1Дата регистрации на форуме: 23 июля 2003
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 20 июня 2007 11:12
moscower, Вы правы. Сейчас проверил у себя — функция действительно показывает то, что нужно. Спасибо.
XXXX Pro, добавил себе на форум — помимо пользователя владельца скрипта вывожу еще от какого имени скрипт выполняется. | | |
Время выполнения скрипта: 0.1379. Количество выполненных запросов: 19, время выполнения запросов 0.0325
|