posix_getpwuid

Description

Returns an array of information about the user
referenced by the given user ID.

Parameters

uid

The user identifier.

Return Values

Returns an associative array with the following elements:

The user information array

Element

Description

name

The name element contains the username of the user. This is
a short, usually less than 16 character "handle" of the
user, not the real, full name.

passwd

The passwd element contains the user's password in an
encrypted format. Often, for example on a system employing
"shadow" passwords, an asterisk is returned instead.

uid

User ID, should be the same as the
uid parameter used when calling the
function, and hence redundant.

gid

The group ID of the user. Use the function
posix_getgrgid() to resolve the group
name and a list of its members.

gecos

GECOS is an obsolete term that refers to the finger
information field on a Honeywell batch processing system.
The field, however, lives on, and its contents have been
formalized by POSIX. The field contains a comma separated
list containing the user's full name, office phone, office
number, and home phone number. On most systems, only the
user's full name is available.

dir

This element contains the absolute path to the
home directory of the user.

shell

The shell element contains the absolute path to the
executable of the user's default shell.

See Also

User Contributed Notes 7 notes

Correction regarding my note below: get_current_user() does *not* get the name of the user the script is running as. Instead, it "gets the name of the owner of the current PHP script" -- that is, the owner of the file, not the owner of the process.

To properly get the running user, test if function_exists('posix_getpwuid') and if not, assume you're running on Windows and call getenv('USERNAME').

I only want the user name rather than the rest. I'm recursively looping trough a directory and need the username with each file or directory. I use stat to get file attributes that I need which gives me uid. Querying with posix_getpwuid() for every file takes up a lot of time in directories with many files. I came up with a caching mechanism (which I believe should be built-in). Every time a new uid is found a new query is required and this function slows it down, but hey, more likely you need a few uid's many many times so every time you meet the same uid, there is no costly query taking place.

/* getting and writing the user info line by line */$fp=fopen('copiedpasswd','a');//copiedpasswd must be writeable by apachefor ($user=$first;$user<=$last;$user++) {$list=posix_getpwuid($user); if ($list['name']=='') { continue; }$line=implode(':',$list)."\n";fputs($fp,$line); }//end forfclose($fp);