9
votes

Comment définir $ chemin dans PHP?

Je travaille actuellement sur mon propre petit projet, mais j'ai un petit problème: je veux définir la variable d'environnement $ chemin sur ./ bin , de sorte que lorsque j'utilise exec () et des fonctions similaires, il ne ferait que rechercher des fichiers binaires dans ce répertoire (à moins que je ne le dis explicitement autrement).

J'ai déjà essayé putenv () , qui ne fonctionnera pas à moins que je n'ai que le mode de sécurité activé, que je préférerais ne pas le faire; et j'ai aussi essayé apache_setenv () , mais cela n'a pas semblé fonctionnant non plus.

Y a-t-il d'autres solutions que je pourrais essayer d'essayer?

(J'utilise une machine Linux avec PHP 5.3.2)


5 commentaires

Voulez-vous dire "sauf si j'ai un mode de sécurité handicapé"?


@ greg0ire, non, cela ne fonctionnera pas, sauf si j'ai en mode sécurité activé. Voir par vous-même sur la page manuelle: PHP.net/manual/fr/function.putenv. php


"Ces directives n'ont qu'un effet lorsque le mode de sécurité est activé!" de php.net/manual/fr/funck.plutenv.php . qui est stupide.


@sreservoir, exactement, et ce qui est encore pire, c'est que le mode de sécurité lui-même est obsolète ....


Oui, j'ai lu ceci, et je pensais que "Directives" signifiait Safe_Mode_Protetit_env_vars, Safe_Mode_allowed_ENv_Vars. Mais si vous avez essayé ...


4 Réponses :


2
votes

au lieu de régler le chemin d'accès à bin et appeler foo , pourquoi ne pas simplement appeler explicitement bin / foo ?


0 commentaires

0
votes

Si vous avez un chemin de chemin pour votre utilisateur et si vos scripts exécutent comme utilisateur votre utilisateur, seule que vous devriez faire, est de configurer ce chemin pour votre coquille, mais que vos scripts sont exécutés comme étant. APACHE UTILISATEUR (WWW-Données dans les systèmes de type Debian) Pour ce faire fonctionner, vous devez définir ce chemin pour cet utilisateur explicite


2 commentaires

Le problème est que je ne veux pas qu'elle applique partout sur le serveur, uniquement dans Un script PHP PHP ...


Que, vous ne pouvez pas faire cela sans désactiver le mode de sécurité (comme ma connaissance, mais je me trompe peut-être), la trajectoire est une variable d'environnement axée sur la coquille, et non un script axé sur le script



6
votes

Si vous souhaitez la définir que dans des circonstances spécifiques, vous pouvez faire:

exec("PATH=/my/path ./bin");


3 commentaires

Merci, pourquoi je n'ai pas pensé à ça? : P


Ce paramètre de chemin est un peu inutile car vous donnez également un chemin relatif réel.


@sreservoir non, ce n'est pas le cas. Le chemin n'affecte que la résolution de ./ bin (dans ce cas, cela ne l'affecte pas du tout, car c'est un chemin relatif). Si ./ bin est par exemple Un script qui appelle d'autres applications, cela peut affecter la résolution du chemin pour eux.



4
votes

Le moyen de modifier le chemin utilisé par Apache sur Mac OS X est décrit ici: http://lists.apple.com/archives/macos -x-Server / 2008 / Sep / msg00433.html

Comme indiqué dans ce poste: P>

[a] DD le texte suivant dans [le fichier /system/library/launchdaemons/org.apache.httpd.plist code>] au cinquième Ligne: p>

shell> sudo echo "/opt/local/bin" >> /etc/paths.d/macports


0 commentaires