58 votes

Comment obtenir le répertoire personnel à partir d'un script PHP CLI?

À partir de la ligne de commande, je peux obtenir le répertoire personnel comme ceci:

 ~/
 

Comment puis-je obtenir le répertoire personnel dans mon script PHP CLI?

 #!/usr/bin/php
<?php
echo realpath(~/);
?>
 

77voto

Felix Kling Points 247451

Utilisez $_SERVER['HOME']


Modifier:

Pour le rendre complet, voyez ce que print_r($_SERVER) m'a donné, exécuté à partir de la ligne de commande:

 Array
(
    [TERM_PROGRAM] => Apple_Terminal
    [TERM] => xterm-color
    [SHELL] => /bin/bash
    [TMPDIR] => /var/folders/Lb/LbowO2ALEX4JTK2MXxLGd++++TI/-Tmp-/
    [TERM_PROGRAM_VERSION] => 272
    [USER] => felix
    [COMMAND_MODE] => unix2003
    [__CF_USER_TEXT_ENCODING] => 0x1F5:0:0
    [PATH] =>/Library/Frameworks/Python.framework/Versions/Current/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/texbin:/usr/X11/bin
    [PWD] => /Users/felix/Desktop
    [LANG] => de_DE.UTF-8
    [SHLVL] => 1
    [HOME] => /Users/felix
    [LOGNAME] => felix
    [DISPLAY] => /tmp/launch-XIM6c8/:0
    [_] => ./test_php2
    [OLDPWD] => /Users/felix
    [PHP_SELF] => ./test_php2
    [SCRIPT_NAME] => ./test_php2
    [SCRIPT_FILENAME] => ./test_php2
    [PATH_TRANSLATED] => ./test_php2
    [DOCUMENT_ROOT] => 
    [REQUEST_TIME] => 1260658268
    [argv] => Array
      (
        [0] => ./test_php2
      )

    [argc] => 1
    )
 

J'espère que je n'expose pas les informations de sécurité pertinentes;)

Compatibilité Windows

Ne pas que $_SERVER['HOME'] n'est pas disponible sous Windows. Au lieu de cela, la variable est divisée en $_SERVER['HOMEDRIVE'] et $_SERVER['HOMEPATH'] .

60voto

EJ Campbell Points 201

Vous pouvez récupérer la valeur de $ HOME dans l'environnement:

 <?php
    $home = getenv("HOME");
?>
 

2voto

Jess Planck Points 21

Cela dépend de l'endroit où vous vous trouvez et de ce que vous essayez de faire.

$_SERVER n'est absolument pas fiable pour un script non serveur, MAIS $_ENV['HOME'] pourrait être meilleur pour un script shell standard. Vous pouvez toujours print_r( $GLOBALS ) et voir ce que votre environnement vous donne à jouer. phpinfo() crache également du texte quand il est appelé à partir d'un script CLI, et le bon résultat php -i exécuté à partir d'un shell fera de même.

-6voto

Steven Points 5514

-11voto

Essayez $_SERVER['DOCUMENT_ROOT'] comme répertoire de base.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X