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 J'ai déjà essayé Y a-t-il d'autres solutions que je pourrais essayer d'essayer? p>
(J'utilise une machine Linux avec PHP 5.3.2) P> ./ bin code>, de sorte que lorsque j'utilise
exec () code> et des fonctions similaires, il ne ferait que rechercher des fichiers binaires dans ce répertoire (à moins que je ne le dis explicitement autrement). P>
putenv () code>, 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 () code>, mais cela n'a pas semblé fonctionnant non plus. P>
4 Réponses :
au lieu de régler le chemin d'accès à bin code> et appeler
foo code>, pourquoi ne pas simplement appeler explicitement
bin / foo code>? P >
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 p>
Le problème est que je ne veux pas qu'elle applique partout sur le serveur, uniquement dans Un script PHP B> 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
Si vous souhaitez la définir que dans des circonstances spécifiques, vous pouvez faire:
exec("PATH=/my/path ./bin");
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 code> (dans ce cas, cela ne l'affecte pas du tout, car c'est un chemin relatif). Si
./ bin code> est par exemple Un script qui appelle d'autres applications, cela peut affecter la résolution du chemin pour eux.
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
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é ...