PHP5-FPM erstellt kein Unix-Socket-Verzeichnis in / var / run

7

Ich habe meine php5-fpmfür die Bindung an einen Unix-Domain-Socket eingerichtet /var/run/php5-fpm.

/etc/php5/fpm/pool.d/www.conf

listen = /var/run/php5-fpm/$pool.sock

Das Problem ist, dass das php5-fpmVerzeichnis nicht automatisch erstellt wird . Wenn ich den Computer neu starte, ist das Verzeichnis weg.

Wie kann ich es beim Booten automatisch erstellen lassen? Oder gibt es eine andere Lösung für dieses Problem?

igorw
quelle
Dieses Verzeichnis ( php5-fpm) muss zuerst existieren.
Quanten
Hmm, habe gerade eine mögliche Antwort gefunden: serverfault.com/questions/74796 Nicht die, auf die ich gehofft habe. : - /
igorw
1
@quanta Soll ich es also jedes Mal, wenn ich hochfahre, von Hand (oder über ein Init-Skript) erstellen? kommt mir lächerlich vor. Ich verstehe nicht, warum es so schwer sein muss.
igorw
Das Init-Skript sollte es bereits für Sie erstellen.
Michael Hampton
1
Wenn das Verzeichnis nicht erstellt wird, können Sie dem Skript init.d, mit dem PHP-FPM gestartet wird, jederzeit den Befehl "mkdir" hinzufügen. Für mein Setup verwende ich / tmp, um sie zu speichern, nur weil es immer da ist.
Jaseeey

Antworten:

2
  1. Wie Sie wahrscheinlich bereits festgestellt haben, ist / var / run von Natur aus kurzlebig. Überprüfen Sie das FHS auf weitere Informationen und andere Verzeichnisse.

  2. Das Verzeichnis / var / run / php5-fpm muss vorhanden sein, bevor php-fpm versucht, es zu verwenden. Weder php-fpm noch das Init-Skript scheinen es zu erstellen, daher müssen Sie eingreifen.

    Am einfachsten ist es, das Init-Skript zu optimieren, um das Verzeichnis auf eine für Ihre Umgebung sehr spezifische Weise zu erstellen. Der Nachteil ist, dass dadurch Gepäck hinzugefügt wird, das Sie in Ihrem "sysadmin toolkit" mitnehmen müssen.

Es gibt zwei weitere Optionen, die mehr involviert sind, aber dauerhafte Lösungen für Sie und andere darstellen:

  1. Senden Sie einen Patch an den Quellcode von php-fpm , damit überprüft wird, ob das in den .conf-Dateien definierte Verzeichnis vorhanden ist. Dies erfordert Kenntnisse der C- und PHP-Prozesse für die Patch-Übermittlung .

  2. Senden Sie einen Patch an das Init-System Ihrer Linux-Distribution, damit es dasselbe tut. Dies könnte einfacher sein (im Vergleich zur ersten Option) und erfordert wahrscheinlich Kenntnisse des Shell-Skripts und erneut der Prozesse Ihrer Distribution für die Patch-Übermittlung.

Sie können die Schnellkorrektur durchführen (Ihre Init-Skripte ändern) und fortfahren. Eine gute Übung wäre jedoch, eine der permanenten Optionen zu befolgen, damit andere davon profitieren können. Es ist einfach genug und könnte Sie dazu bringen, zu Open Source-Projekten beizutragen (wenn Sie es nicht bereits tun, entschuldigen Sie meine Unwissenheit).

Giovanni Tirloni
quelle
0

Hey, da musst du das PHP-Verzeichnis im Ordner / run erstellen und dann PHP als root neu starten, wenn du php7.2 hast. Du musst $ sudo /etc/init.d/php7.2-fpm restart schreiben

und alles sollte wie erwartet funktionieren

Amine Yakoubi
quelle