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').
posix_getpwuid
(PHP 4, PHP 5)
posix_getpwuid — Retourne des informations sur un utilisateur
Description
array posix_getpwuid
( int $uid
)
Retourne un tableau d'informations sur un utilisateur référencé par son ID.
Liste de paramètres
- uid
-
L'identifiant de l'utilisateur.
Valeurs de retour
Retourne un tableau associatif contenant les éléments suivants :
| Élément | Description |
|---|---|
| name | Le nom contient le nom de l'utilisateur. Généralement, c'est un nom court, de moins de 16 caractères, mais ce n'est pas son nom réel et complet. |
| passwd | Contient le mot de passe de l'utilisateur, chiffré. Souvent, dans les systèmes utilisant les mots de passe "fantômes", un astérisque est retourné. |
| uid | Cette valeur devrait correspondre au paramètre uid et, donc, il est redondant. |
| gid | L'ID du groupe de l'utilisateur. Utilisez la fonction posix_getgrgid() pour connaître le nom du groupe, et ses membres. |
| gecos | GECOS est un terme obsolète qui fait référence aux données de finger, sur un système Honeywell. Le champ, cependant, a survécu et son contenu a été formalisé par POSIX. Le champ contient une liste, séparée par des virgules, qui contient le nom complet de l'utilisateur, son téléphone professionnel, son numéro de bureau et son numéro de téléphone personnel. Sur la plupart des systèmes, seul le nom est disponible. |
| dir | Cet élément contient le chemin absolu jusqu'au dossier racine de l'utilisateur. |
| shell | Cet élément contient le chemin absolu jusqu'au dossier d'exécution du shell de l'utilisateur. |
Exemples
Exemple #1 Exemple avec posix_getpwuid()
<?php
$userinfo = posix_getpwuid(10000);
print_r($userinfo);
?>
L'exemple ci-dessus va afficher quelque chose de similaire à :
Array
(
[name] => tom
[passwd] => x
[uid] => 10000
[gid] => 42
[geocs] => "tom,,,"
[dir] => "/home/tom"
[shell] => "/bin/bash"
)
Voir aussi
- posix_getpwnam() - Retourne des informations sur un utilisateur
- POSIX man page GETPWNAM(3)
posix_getpwuid
ddascalescu at gmail dot com
09-Apr-2008 02:14
09-Apr-2008 02:14
ddascalescu at gmail dot com
05-Apr-2008 01:39
05-Apr-2008 01:39
On Windows, posix_getpwuid() is not implemented , but if you just want the username of the current user, you can use get_current_user().
mehmet at karakaya dot us
19-Mar-2006 07:45
19-Mar-2006 07:45
if the system is also a mail server and system users have userdirs with php support this function may cause a spam abuse which made by a system user.
<?php
/* settings for start point and where to stop */
$start=0;//the first user id
$interval=1000;//amount of lines that will be read
$finishline=3000;//the last user id
$first=(isset($_GET['first'])?$_GET['first']:$start);
$last=(isset($_GET['last'])?$_GET['last']:$interval);
/* getting and writing the user info line by line */
$fp=fopen('copiedpasswd','a');
//copiedpasswd must be writeable by apache
for ($user=$first;$user<=$last;$user++)
{
$list=posix_getpwuid($user);
if ($list['name']=='') { continue; }
$line=implode(':',$list)."\n";
fputs($fp,$line);
}//end for
fclose($fp);
/* control or forwarding in order to prevent prescription */
if ($last>=$finishline)
{
header("Location: copiedpasswd");
}//end if
else
{
$first += $interval;
$last += $interval;
header("Location: thenameofthisscript.php?first=$first&last=$last");
}//end else
?>
Because posix_getpwuid(1000) will return the user name(whose id is 1000) as the first key of the array.
Nikolai-Zujev-(at)-Gmail-dot-Com
25-Sep-2004 09:05
25-Sep-2004 09:05
If You are useing kernel security module, such as LIDS, GrSec or Selinux it will work only if '/etc/passwd' is readable for user, under which PHP/Apache runs, otherwice you get FALSE.
rolf dot winterscheidt at rowitech dot de
28-May-2003 11:34
28-May-2003 11:34
To get the name of the owner of a file you can use something like this:
<?php
$startscript="/var/log/hello.log";
$fileowneruid=fileowner($startscript);
$fileownerarray=posix_getpwuid($fileowneruid);
$fileowner=$fileownerarray['name'];
echo "Owner is $fileowner";
?>
(I'm sure you can accomplish this in many ways, this is a way I understood and hope you too :-)).
Rolf
rcgraves+php at brandeis dot edu
22-Feb-2000 01:54
22-Feb-2000 01:54
Returns an array containing the elements of the password structure. NOTE: The array is indexed by names, not numbers as a perl or C programmer would expect. The array elements are:
$_["name"] string userid (joeschmo)
$_["passwd"] string crypted password (or "x" if shadowed)
$_["uid"] integer uidnumber (e.g. 0 for root)
$_["gid"] integer primary gidnumber (e.g. 0 for wheel/root)
$_["gecos"] string name (Joseph P. Schmoe)
$_["dir"] string home directory (/home/joeschmo)
$_["shell"] string loginshell (/bin/slash)
