Hey Leute, ich habe einen Ubuntu-Webserver mit Nginx + PHP5-FPM konfiguriert. Ich habe eine Chroot-Umgebung (mit Jailkit) erstellt, in die ich meine Entwickler hineinwerfe, von wo aus sie ihre Testanwendungen entwickeln können.
Chroot-Gefängnis: / home / jail
Nginx und PHP5-FPM werden außerhalb der Chroot-Umgebung ausgeführt, sind jedoch so konfiguriert, dass sie mit Websites in der Chroot-Umgebung funktionieren.
Bisher stellen Nginx und PHP5-FPM Dateien ohne Probleme bereit , mit Ausnahme der folgenden: Beim Versuch, eine Verbindung zu MySQL herzustellen, wird folgende Fehlermeldung angezeigt : SQLSTATE [HY000] [2002] Über Socket kann keine Verbindung zum lokalen MySQL-Server hergestellt werden. ' /var/run/mysqld/mysqld.sock '
Ich glaube, das Problem ist darauf zurückzuführen, dass die nicht chrootierte php.ini auf mysqld.sock außerhalb der chroot-Umgebung verweist (derzeit wird tatsächlich die MySQL-Standardeinstellung verwendet).
Meine Frage ist, wie kann ich PHP so konfigurieren, dass es über Loopback oder ähnliches auf MySQL zugreift? (Fand das als Vorschlag in einem Google-Ergebnis, aber ohne Anweisungen)
Oder wenn mir eine andere offensichtliche Einstellung fehlt, lassen Sie es mich wissen. Wenn es eine Option zum Erstellen eines Hardlinks gibt (der auch dann verfügbar bleibt, wenn MySQL neu gestartet wird), wäre dies ebenfalls praktisch.
Wie wäre es als
host
Wert zu verwenden127.0.0.1
? Es wird eine TCP-Verbindung verwendet, die keinen Socket schreibt (im Gegensatz zumlocalhost
Wert unter Unix).quelle
Das erneute Montieren mit
--bind
für die Chroot scheint ein praktikabler Vorschlag zu sein. IMHO-Verbindung mit MySQL über einen TCP-Socket (127.0.0.1) scheint jedoch sauberer, sicherer und weniger fehleranfällig zu sein.Der Grund, warum ich das sage, ist, dass verschiedene Quellen, einschließlich http://blog.dispatched.ch/postfix-and-mysql-debian/ und /programming/11389214/postfix-cant-connect-with-mysql -table-when-using-unix-socket-postmap-success schlägt vor, der fstab hinzuzufügen:
Seien Sie vorsichtig damit: Debian bereinigt / var / run zumindest beim Neustart, sodass die Bereitstellung beim Start fehlschlägt, ebenso wie Ihr Dienst. Natürlich könnten Sie stattdessen verwenden:
quelle
127.0.0.1
) als MySQL-Host in mysqli_connect ()localhost
. Dies erfordert etwas mehr Ressourcen, aber der Unterschied sollte vernachlässigbar sein.Sie können den Socket von MySQL über die Socket-Option in Ihrer my.cnf-Datei steuern.
quelle