wake-up-neo.com

Installieren des PDO-Treibers auf dem MySQL Linux-Server

Vor kurzem wurde mir vorgeschlagen, meinen Code so zu ändern, dass er PDO verwendet, um meine Abfragen zu parametrisieren und HTML sicher in der Datenbank zu speichern.

Nun, hier sind die Hauptprobleme:

  1. Ich habe mir http://php.net/manual/en/ref.pdo-mysql.php angesehen und weiß nicht genau, wo ich das hinstellen soll $ ./configure --with-pdo-mysql string ...

  2. Für die Website, die ich gerade erst aufbaue, ist nur ein PDO für eine Seite erforderlich. Obwohl ich in Betracht ziehen könnte, es neu zu schreiben, würde es eine Weile dauern und ich muss die Seiten bald ausführen, damit ich MySQL nicht vollständig deaktivieren kann. Wenn ich PDO installiere, kann ich dann immer noch mysql_* Handler?

Auf dem fraglichen Server läuft PHP Version 5.4.6-1ubuntu1 und Apache/2.2.22 (Ubuntu). Wenn es darauf ankommt, führe ich auch eine phpMyAdmin-Datenbank aus.

96
Yuri Scarbaci

Unter Ubuntu sollten Sie in der Lage sein, die erforderlichen PDO-Teile von Apt mit Sudo apt-get install php5-mysql Zu installieren.

Es gibt keine Einschränkung zwischen der gleichzeitigen Verwendung von PDO und mysql_. Sie müssen jedoch zwei Verbindungen zu Ihrer Datenbank herstellen, eine mit mysql_ und eine mit PDO.

177

Das ist eine gute Frage, aber ich denke, Sie verstehen einfach falsch, was Sie lesen.

Installieren Sie PDO

Das ./config --with-pdo-mysql ist etwas, das Sie nur anlegen müssen , wenn Sie Ihren eigenen Code kompilieren PHP). Wenn Sie ihn mit installieren Paketmanager müssen nur die Kommandozeile von Jany Hartikainen benutzen: Sudo apt-get install php5-mysql und auch Sudo apt-get install pdo-mysql

Kompatibilität mit mysql_

Abgesehen davon, dass mysql_ wirklich entmutigt ist, sind beide unabhängig. Wenn Sie ein PDO verwenden, ist mysql_ nicht beteiligt, und wenn Sie mysql_ verwenden, ist PDO nicht erforderlich.

Wenn Sie PDO ausschalten, ohne eine Zeile in Ihrem Code zu ändern, haben Sie kein Problem. Aber da Sie angefangen haben, sich mit PDO zu verbinden und Abfragen zu schreiben, müssen Sie es behalten und mysql_ aufgeben.

Vor einigen Jahren veröffentlichte das MySQL-Team ein Skript für Migration auf MySQLi . Ich weiß nicht, ob es angepasst werden kann, aber es ist offiziell.

24
artragis

Grundsätzlich stimmt die Antwort von Jani Hartikainen! Ich habe seine Antwort positiv bewertet. Was auf meinem System (basierend auf Ubuntu 15.04) fehlte, war die Aktivierung der PDO-Erweiterung in meiner php.ini

extension=pdo.so
extension=pdo_mysql.so

starte den webserver neu (zb mit "sudo service apache2 restart") -> alles in ordnung :-)

Um herauszufinden, wo sich Ihre derzeit aktive php.ini-Datei befindet, können Sie phpinfo () oder einige andere Hinweise verwenden: https://www.ostraining.com/blog/coding/phpini-file/

15
Tobias Gaertner

Installieren Sie zunächst die erforderlichen PDO-Teile, indem Sie den Befehl Sudo apt-get install php*-mysql Ausführen. Dabei ist * ein Versionsname von PHP wie 5.6, 7.0, 7.1, 7.2

extension=pdo.so
extension=pdo_mysql.so

in Ihrer INI-Datei und starten Sie den Server per Befehl neu

Sudo service Apache2 restart
7
Avnish alok
  1. PDO steht für PHP Data Object.
  2. PDO_MYSQL ist der Treiber, der die Schnittstelle zwischen dem Datenobjekt (Datenbank) und der Benutzereingabe (eine Ebene unter der Benutzerschnittstelle, die als "Code Behind" bezeichnet wird) implementiert, die auf Ihr Datenobjekt, die MySQL-Datenbank, zugreift.

Mit dieser Option wird eine zusätzliche Sicherheitsebene zwischen der Benutzeroberfläche und der Datenbank implementiert. Mithilfe dieser Ebene können Daten normalisiert werden, bevor sie in Ihre Datenstruktur eingefügt werden. (Hauptstädte sind Hauptstädte, keine führenden oder nachgestellten Leerzeichen, alle Daten sind ordnungsgemäß gebildet.)

Es gibt jedoch einige Nuancen, die Sie möglicherweise nicht kennen.

Zunächst haben Sie bis jetzt wahrscheinlich alle Ihre Abfragen in einer ähnlichen Form wie die URL geschrieben und die Parameter über die URL selbst übergeben. Mit dem PDO erfolgt dies alles auf der Ebene der Benutzeroberfläche. Die Benutzerschnittstelle übergibt den Ball dem PDO, der ihn ins Feld trägt und für ein 7-Punkte-TOUCHDOWN in die Datenbank einpflanzt. Er erhält sieben Punkte, weil er ihn dort erhalten hat und so viel sicherer als die Weitergabe von Informationen über die URL getan hat .

Sie können Ihre Site auch auf SQL-Injection härten, indem Sie eine Datenschicht verwenden. Wenn Sie diese Zwischenschicht verwenden, die der EINZIGE "Player" ist, der mit der Datenbank selbst kommuniziert, können Sie sicher erkennen, wie viel sicherer dies sein kann. Schnittstelle zur Datenebene zur Datenbank, Datenebene zur Datenbank zur Datenebene zur Schnittstelle.

Und:

Indem Sie beim Schreiben Ihres Codes Best Practices implementieren, sind Sie mit dem Ergebnis viel zufriedener.

Zusätzliche Quellen:

Betreff: MySQL Funktionen in der URL php dot net/manual/de/ref dot pdo-mysql dot php

Betreff: Dreischichtige Architektur - Sicherheit für Ihre Anwendungen https://blog.42.nl/articles/introducing-a-security-layer-inyour-application-architecture/

Betreff: Objektorientiertes Entwerfen mit UML Wenn Sie mehr darüber erfahren möchten, ist dies das beste Buch auf dem Markt. Grady Booch war der Vater von UML http://dl.acm.org/citation.cfm ? id = 291167 & CFID = 241218549 & CFTOKEN = 82813028

Oder erkundigen Sie sich bei bitmonkey. Da ist eine Gruppe, mit der du sicher viel lernen könntest.

>

Wenn wir wüssten, was die Terminologie wirklich bedeutet, müssten wir nichts lernen.

>

7
Elaine Ossipov

Wenn Sie einen CakePHP Docker Container mit MySQL benötigen, habe ich zu diesem Zweck ein Docker-Image erstellt! Kein Grund zur Sorge, es einzurichten. Es funktioniert einfach!

So installiere ich in einem Ubuntu-basierten Image:

https://github.com/marcellodesales/php-Apache-mysql-4-cakephp-docker/blob/master/Dockerfile#L8

RUN docker-php-ext-install mysql mysqli pdo pdo_mysql

Das Erstellen und Ausführen Ihrer Anwendung ist nur ein Prozess von zwei Schritten (vorausgesetzt, Sie befinden sich im aktuellen Verzeichnis der App):

$ docker build -t myCakePhpApp .
$ docker run -ti myCakePhpApp
0