Heim >Entwicklungswerkzeuge >composer >Lösung des Problems der fehlenden Reaktion bei der Ausführung eines Composer-Befehls (open_basedir-Problem)

Lösung des Problems der fehlenden Reaktion bei der Ausführung eines Composer-Befehls (open_basedir-Problem)

藏色散人
藏色散人nach vorne
2019-09-29 14:28:184304Durchsuche

Die folgende Spalte des Composer-Tutorials stellt Ihnen die Lösung vor, wenn bei der Ausführung eines Composer-Befehls keine Antwort erfolgt (open_basedir-Problem). Freunde in Not!

Lösung des Problems der fehlenden Reaktion bei der Ausführung eines Composer-Befehls (open_basedir-Problem)

Umgebung

CentOS 7

Nginx 1.12.0

PHP 7.1.6

Problem

Ursprünglich funktionierte alles normal. Da ich ein neues Projekt erstellen musste, habe ich es mit Composer erstellt, aber es wurde nichts angezeigt und ich habe es nacheinander ausgeführt Auch auf die Gründung weiterer Projekte kam keine Reaktion. Nach dem Hinzufügen der Option -vvv ändert sich das Ergebnis nicht. Dann versuche ich, Befehle wie Composer -h, Composer Self Update usw. auszuführen, aber es wird keine Eingabeaufforderung angezeigt.

Nachdem ich den Composer-bezogenen Befehl erneut ausgeführt habe, habe ich echo $? ausgeführt und das Ergebnis 255 erhalten.

Als ich versuchte, Composer zu installieren, erschien mir sofort das Problem, bevor ich ein neues Projekt erstellte. Der Wert ist das Projekt Verzeichnis und /tmp/, das Arbeitsverzeichnis von Composer ist das Projektverzeichnis.

Nach dem Kommentieren von open_basedir und dem Neustart von PHP gab es bei der Verwendung von Composer kein Problem. Aber ich möchte trotzdem open_basedir setzen, hier ist die Antwort.

Nginx verwenden

Unabhängig davon, ob es sich um ein externes Anforderungsserver-Parsing oder einen Terminal-PHP-Befehl handelt, wird die Datei php.ini verwendet, die Ausführung von Composer erfolgt jedoch lokal System. Mit anderen Worten: Wenn Sie es über Nginx einrichten, wird die lokale Ausführung von Composer nicht beeinträchtigt.

Nginx hat Konfiguration hinzugefügt

fastcgi_param  PHP_ADMIN_VALUE "open_basedir=项目目录/:/tmp/";

Nach dem Neustart von Nginx und PHP gibt es keine Ausnahme, wenn versucht wird, Composer im Terminal auszuführen. Bei der Konfiguration von open_basedir in der Nginx-Konfiguration sind zwei Punkte zu beachten.

Wenn Ihr Programm ein Framework ist, wird nicht empfohlen, $document_root/ zu schreiben, da dies der Root-Wert ist und dieser Wert das Verzeichnis des Framework-Eintrags ist und während des Betriebs ein Fehler auftritt. Wenn Sie es verstanden haben, können Sie auch $document_root/ schreiben, aber vergessen Sie nicht, das Verzeichnis hinzuzufügen, in dem sich die gesamte Website befindet

Denken Sie daran, am Ende des Verzeichnisses „/“ hinzuzufügen, zum Beispiel schreiben „/tmp/“ statt „/tmp“, wenn Sie „/tmp“ schreiben, dann liegt auch „/tmp1“ im erlaubten Bereich

Ich möchte nur php.ini verwenden

Es ist offensichtlich, dass die für die Ausführung erforderlichen Verzeichnisse nicht nur das Projektverzeichnis (das auch das Arbeitsverzeichnis ist, in dem ich den Composer-Befehl ausführe) und das tmp-Verzeichnis sind, das ich nach relevanten Informationen gesucht, sondern auch gefunden habe Keine Ergebnisse. Schließlich habe ich meine Ideen geklärt und den ursprünglichen Wert von open_basedir in php.ini hinzugefügt. Nachdem ich das Verzeichnis gefunden habe, in dem sich der Composer-Befehl befindet, und das Composer-Dateiverzeichnis, starten Sie PHP neu und Composer wird normal sein.

Das obige ist der detaillierte Inhalt vonLösung des Problems der fehlenden Reaktion bei der Ausführung eines Composer-Befehls (open_basedir-Problem). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:juejin.im. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen