PHP: Comment définir le répertoire de travail en cours à être le même que le répertoire d'exécution du script
Je suis dans le processus de transfert de mon site web à partir d'un serveur à un autre. J'ai quelques scripts php qui utilisent le is_readable fonction qui utilise le répertoire de travail courant.
Sur l'ancien serveur, quand je l'appelle getcwd(), elle renvoie le dossier dans lequel le script est exécuté. Sur le nouveau serveur, il renvoie le répertoire racine '/'.
Je voudrais savoir comment je peux configurer PHP pour utiliser le dossier en cours au lieu de '/'. Je ne veux pas avoir à modifier le code PHP qui fonctionne déjà sur l'ancien serveur. Je peux configurer le nouveau serveur, mais vous ne savez pas quels sont les paramètres à modifier. J'utilise apache2, si cela aide.
EDIT: Il semble que mon répertoire de travail n'est pas racine comme je le pensais. Lorsque je créer un testFile.php et l'echo getcwd() il affiche le répertoire dans lequel le fichier php. Mais dans mon fichier de problème, dans le même répertoire, getcwd() montre que '/'
Oui: Ancien serveur utilise 5.2. Nouveau serveur utilise 5.3.
Double Possible de En PHP, la Meilleure manière d'assurer le répertoire de travail actuel est le même que le script , lorsque l'aide de la CLI
OriginalL'auteur MF86 | 2011-03-10
Vous devez vous connecter pour publier un commentaire.
chdir(__DIR__);
ou
chdir(dirname(__FILE__));
(voir chdir et les constantes magiques).
Mais qui devrait être par défaut.
Vous ne pouvez pas le mettre dans votre php.ini. Mais vous pouvez le mettre dans des fichiers de configuration qui sont écrites comme du code PHP. (Par exemple, un fichier de configuration contenant le code tel que
<?php $config['settingName'] = __DIR__ . 'someValue';
)OriginalL'auteur Czechnology
Ce qui est normal dans Mode CLI:
une solution de rechange rapide serait
pourquoi êtes-vous en premier lieu? Où est votre script en cours d'exécution?
Je ne suis pas sûr que je suis. Mon script est en cours d'exécution sur un serveur apache dans mon dossier www.
OriginalL'auteur Pekka 웃
Vous pouvez obtenir le répertoire courant un script avec
dirname(__FILE__)
ou__DIR__
si >= PHP 5.3.chdir
, ce qui peut avoir des effets secondaires indésirables. Il sera préférable de régler le script de ne pas se préoccuper de ce que le répertoire de travail actuel est de poursuivre éventuellement le comportement étrange.Je voudrais être capable de faire cela sans modifier les scripts existants. Sur l'ancien serveur getcwd() retourne le répertoire courant de l'exécution du script.
Si vous avez besoin de votre code fonctionne sur les ordinateurs sur lesquels vous ne pouvez pas contrôler la configuration, vous pour modifier votre code à tout simplement pas de soins à propos de la configuration externe.
__DIR__
oudirname(__FILE__)
est garanti pour vous obtenir le répertoire dans lequel le fichier de vie sans se soucier de la mdc.Je peux contrôler la configuration de la nouvelle machine.
Wow! Cela a résolu mon problème sur IIS!! J'ai eu l'erreur mage.php pas trouvé. Ajouté cela dans index.php define('MAGENTO_ROOT', DIR); Merci!
OriginalL'auteur alex