3 Stimmen

Ändern Sie die PHP-Mysql-Bibliothek von mysqlnd zu libmysql (für SSL-Verbindungen)

Ich verwende die neueste Version von PHP 5.3.6 auf einem Windows-Rechner. Ich habe einen entfernten MySQL-Server so konfiguriert, dass er nur SSL-Verbindungen akzeptiert. Die Verbindung funktioniert problemlos mit dem MySQL-Befehlszeilen-Client:

mysql.exe -u user -h mysql.example.com -P 3307 --ssl-ca= C:\www\mysql.example.com.crt -p

Ich kann jedoch keine Verbindung über PHP herstellen. Laut die PHP-Dokumentation Dies ist darauf zurückzuführen, dass PHP 5.3 standardmäßig den neueren MySQL Native Driver (mysqlnd) verwendet. Dieser Treiber unterstützt kein SSL.

Ich kann nicht glauben, dass sie eine solche Regression durchgehen ließen (SSL ist einer der wenigen Gründe, warum jemand mysqli statt der mysql-Erweiterung verwenden würde), ohne eine einfache Möglichkeit anzubieten, zum alten libmysql-Treiber zurückzukehren, der SSL unterstützt.

Auf php.net gibt es keinen Hinweis darauf, wie man das macht. Auch eine Neukompilierung ist keine Option. Meine Frage ist also: Wie kann dies leicht getan werden?

0voto

Charles Punkte 49941

Auf php.net gibt es keinen Hinweis darauf, wie dies zu tun ist. Auch eine Neukompilierung ist keine Option.

Um die Erweiterungen mysql, mysqli und PDO zu erstellen, muss PHP gegen eine MySQL-Schnittstellenbibliothek kompiliert werden. Sie können die zugrunde liegende Bibliothek nicht einfach auswechseln. Um eine andere Bibliothek, wie die von MySQL bereitgestellte, zu verwenden, müssen Sie PHP gegen diese neu kompilieren.

Der Grund für den Wechsel zur nativen Bibliothek ist, dass die von MySQL bereitgestellte Bibliothek unter der GPL veröffentlicht ist. Die PHP-Lizenz ist nicht mit der GPL kompatibel, so dass die Verbreitung von PHP-Binärdateien, die gegen GPL-Code kompiliert wurden, ziemlich weit oben auf der "Du sollst nicht"-Liste steht. Sie können den MySQL-Leuten für diese Dummheit danken und/oder sie verfluchen. Nur Idioten und böse Menschen veröffentlichen Bibliothekscode unter der GPL.

</rant>

Wenn Sie nicht neu kompilieren können, haben Sie wahrscheinlich Pech gehabt. Denken Sie daran, dass Microsoft VC9 (Visual Studio 2008) anbietet. unentgeltlich so dass Sie sollte in der Lage sein, die Neukompilierung durchzuführen, falls erforderlich.

Möglicherweise möchten Sie andere Optionen für eine sichere Verbindung zu Ihrem MySQL-Server prüfen.

Wenn der entfernte Rechner Linux oder ein anderes Unix-System ist, können Sie einen SSH-Tunnel (Portweiterleitung) verwenden. Es gibt zahlreiche SSH-Clients für Windows die dies tun können.

Sie sollten auch Folgendes berücksichtigen OpenVPN eine VPN-Lösung, die auf SSL/TLS aufbaut. Damit können Sie eine sichere Verbindung zwischen den beiden Rechnern herstellen, ohne sich um die Sicherheit auf Protokollebene kümmern zu müssen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X