PHP exec variable $PATH éléments manquants
Quand j'ai echo $PATH sur ma ligne de commande, il retourne
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/Applications/MAMP/Library/bin:/usr/local/git/bin:/usr/X11/bin
Lorsque j'exécute ce code php
exec('echo $PATH; whoami; less /etc/paths; 2>&1')
- Je obtenir
string 'echo $PATH; whoami; less /etc/paths; 2>&1' (length=56)
array
0 => string '/usr/bin:/bin:/usr/sbin:/sbin' (length=29)
1 => string 'eric' (length=4)
2 => string '/usr/bin' (length=8)
3 => string '/bin' (length=4)
4 => string '/usr/sbin' (length=9)
5 => string '/sbin' (length=5)
6 => string '/usr/local/bin' (length=14)
7 => string '/Applications/MAMP/Library/bin' (length=30)
8 => string '/usr/bin:/bin:/usr/sbin:/sbin' (length=29)
C'est sur Mac OS X. quelqu'un Peut me dire pourquoi mes deux derniers éléments de chemin d'accès sont manquantes?
- Faites-vous appel à PHP dans apache ou en cli
Vous devez vous connecter pour publier un commentaire.
Des variables d'environnement sous Mac OS X sont définis par différents mécanismes mis en place en fonction de votre code, ou de son processus parent, a été lancé. Pour s'assurer que les éléments lancé à partir d'un shell interactif et les éléments lancé par le WindowServer ont le même chemin, vous avez besoin de garder ~/.MacOSX/environnement.plist en synchronisation avec ce qui est prévu dans .profil (ou .cshrc).
Essayer de l'exécution de cette avant de vous appeler
exec
:putenv("PATH=" . getenv('PATH'));
Ce n':
vous donner?
Il est probable que le shell que PHP génère (probablement
sh
au lieu debash
) n'est pas d'obtenir le même environnement que vous avez à la ligne de commande. Vous ne dites pas comment vous utilisez votreexec
de commande.Cela va vous montrer le shell est en cours d'exécution:
Vous pouvez avoir besoin d'utiliser la
putenv
de commande ou de déterminer si votre chemin d'accès doit être mis en/etc/profile
,~/.profile
ou~/.bashrc
pour être ramassé.ENV
dans l'environnement que vous êtes l'exécution de votre script à partir d' (avant de l'exécuter). Par exemple:export ENV=/etc/profile
ouexport ENV=/home/username/.profile
. (Si vous utilisez/.bashrc
, vous aurez besoin de mettre le code qui empêchesh
de l'exécution de Bash-code spécifique qu'il ne peut pas comprendre.) Le Bourne shell seules sources de ces fichiers automatiquement lorsqu'il est un shell de connexion.