Maison >outils de développement >composer >Résoudre le problème de non-réponse lors de l'exécution d'une commande Composer (problème open_basedir)
La colonne suivante du tutoriel Composer vous présentera la solution en cas d'absence de réponse lors de l'exécution d'une commande de Composer (problème open_basedir, j'espère que cela vous sera utile). amis dans le besoin !
Environnement
CentOS 7
Nginx 1.12.0
PHP 7.1.6
Problème
Au départ, tout fonctionnait bien. Parce que j'avais besoin de créer un nouveau projet, j'ai utilisé Composer pour le créer, mais rien ne s'est affiché. J'ai successivement exécuté le projet. création d’autres projets. Il n’y a pas non plus eu de réponse. Après avoir ajouté l'option -vvv, il n'y a aucun changement dans le résultat. Ensuite, j'essaie d'exécuter des commandes telles que composer -h, composer self update, etc., mais il n'y a pas de message d'invite.
Après avoir exécuté à nouveau une commande liée à Composer, j'ai exécuté echo $? et j'ai obtenu le résultat de 255.
Lorsque j'ai essayé d'installer Composer, un message d'erreur lié à open_basedir est apparu. J'ai immédiatement connu le problème. Avant de créer un nouveau projet cette fois, j'ai configuré l'option open_basedir de php.ini. répertoire et /tmp/, le répertoire de travail de Composer est le répertoire du projet.
Après avoir commenté open_basedir et redémarré PHP, il n'y a eu aucun problème lors de l'utilisation de Composer. Mais je veux toujours définir open_basedir, voici la réponse.
Utiliser Nginx
Qu'il s'agisse d'une analyse du serveur de requêtes externe ou d'une commande PHP du terminal, le fichier php.ini sera utilisé, mais l'exécution de Composer est locale au système. En d’autres termes, si vous le configurez depuis Nginx, l’exécution locale de Composer ne sera pas affectée.
Nginx a ajouté la configuration
fastcgi_param PHP_ADMIN_VALUE "open_basedir=项目目录/:/tmp/";
Après le redémarrage de Nginx et PHP, il n'y a aucune exception lorsque vous essayez d'exécuter Composer dans le terminal. Il y a deux points à noter lors de la configuration de open_basedir dans la configuration Nginx.
Si votre programme est un framework, il n'est pas recommandé d'écrire $document_root/, car c'est la valeur racine, et cette valeur est le répertoire de l'entrée du framework, et une erreur se produira pendant le fonctionnement. Si vous comprenez, vous pouvez aussi écrire $document_root/, mais n'oubliez pas d'ajouter le répertoire où se trouve tout le site
Pensez à ajouter "/" à la fin du répertoire, par exemple, écrivez "/tmp/" au lieu de "/tmp", si vous écrivez "/tmp", alors "/tmp1" est également dans la plage autorisée
Je veux juste utiliser php.ini
C'est évident, commande Composer Les répertoires requis pour l'exécution ne sont pas seulement le répertoire du projet (qui est également le répertoire de travail où j'exécute la commande Composer) et le répertoire tmp que j'ai recherché mais trouvé. aucun résultat. Enfin, j'ai trié mes idées et ajouté la valeur originale de open_basedir dans php.ini. Après avoir localisé le répertoire où se trouve la commande Composer et le répertoire du fichier Composer, redémarrez PHP et Composer sera normal.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!