Il n'y a pas si longtemps, on m'a suggéré de changer mon code pour utiliser PDO afin de paramétrer mes requêtes et de sauvegarder le code HTML en toute sécurité dans la base de données.
Eh bien, voici les principaux problèmes:
J'ai regardé http://php.net/manual/en/ref.pdo-mysql.php , et je ne comprends pas vraiment où je devrais mettre cette chaîne $ ./configure --with-pdo-mysql
. .
En réalité, le site que je construis ne nécessite PDO que pour une page. Bien que je puisse envisager de le réécrire, cela prendrait un certain temps et j'ai besoin que les pages fonctionnent rapidement, je ne peux donc pas désactiver complètement MySQL. Si j'installe PDO, pourrai-je toujours utiliser les gestionnaires mysql_*
?
Le serveur en question exécute PHP version 5.4.6-1ubuntu1 et Apache/2.2.22 (Ubuntu). J'exécute également une base de données phpMyAdmin, si cela compte.
Sur Ubuntu, vous devriez pouvoir installer les parties PDO nécessaires d'apt avec Sudo apt-get install php5-mysql
Il n'y a pas de limitation entre l'utilisation simultanée de PDO et de mysql_. Vous devrez cependant créer deux connexions à votre base de données, l’une avec mysql_ et l’autre avec PDO.
C'est une bonne question, mais je pense que vous venez de mal comprendre ce que vous avez lu.
Le ./config --with-pdo-mysql
est quelque chose que vous devez mettre uniquement si vous compilez votre propre code PHP. Si vous l'installez avec des gestionnaires de paquets, il vous suffit d'utiliser la ligne de commande fournie par Jany Hartikainen: Sudo apt-get install php5-mysql
ainsi que Sudo apt-get install pdo-mysql
Mis à part le fait que mysql_ est vraiment découragé, ils sont tous deux indépendants. Si vous utilisez PDO, mysql_ n'est pas impliqué et si vous utilisez mysql_, PDO n'est pas requis.
Si vous désactivez PDO sans modifier aucune ligne dans votre code, vous n'aurez pas de problème. Mais depuis que vous avez commencé à vous connecter et à écrire des requêtes avec PDO, vous devez le conserver et abandonner mysql_.
Il y a plusieurs années, l'équipe MySQL a publié un script pour migrer vers MySQLi . Je ne sais pas si cela peut être personnalisé, mais c'est officiel.
En gros, la réponse de Jani Hartikainen est la bonne! J'ai voté sa réponse. Ce qui manquait sur mon système (basé sur Ubuntu 15.04) était d’activer PDO Extension dans mon php.ini
extension=pdo.so
extension=pdo_mysql.so
redémarrez le serveur Web (par exemple, avec "Sudo Service Apache2 restart") -> chaque amende :-)
Pour trouver où se trouve votre fichier php.ini actif actuel, vous pouvez utiliser phpinfo () ou d'autres astuces d'ici: https://www.ostraining.com/blog/coding/phpini-file/
Au début, installez les pièces PDO nécessaires en exécutant la commande Sudo apt-get install php*-mysql
où * est un nom de version de php tel que 5.6, 7.0, 7.1, 7.2 Après l'installation, vous devez mentionner (décommentez s'il est déjà présent) ces deux instructions.
extension=pdo.so
extension=pdo_mysql.so
dans votre fichier .ini et redémarrez votre serveur par commande
Sudo service Apache2 restart
Le but de cette utilisation est d'implémenter une couche de sécurité supplémentaire entre l'interface utilisateur et la base de données. En utilisant cette couche, les données peuvent être normalisées avant d'être insérées dans votre structure de données. (Les capitales sont des capitales, pas d'espaces de début ou de fin, toutes les dates sont correctement formées.)
Mais il y a quelques nuances à ce que vous pourriez ne pas être au courant.
Tout d’abord, jusqu’à présent, vous avez probablement écrit toutes vos requêtes dans un format similaire à l’URL, et vous transmettez les paramètres à l’aide de l’URL elle-même. En utilisant le PDO, tout cela est fait au niveau de l'interface utilisateur. L'interface utilisateur passe la balle au PDO qui la transporte dans la base de données et la plante dans la base de données pour un TOUCHDOWN en 7 points. .
Vous pouvez également durcir votre site à injection SQL en utilisant une couche de données. En utilisant cette couche intermédiaire qui est le SEUL "joueur" qui parle à la base de données elle-même, je suis sûr que vous pouvez voir comment cela pourrait être beaucoup plus sécurisé. Interface pour la couche de données à la base de données, couche de données à la base de données à la couche de données pour l'interface.
Et:
En mettant en œuvre les meilleures pratiques lors de la rédaction de votre code, vous serez beaucoup plus heureux du résultat.
Sources supplémentaires:
Re: Fonctions MySQL dans l'URL php dot net/manuel/fr/ref dot pdo-mysql dot php
Re: architecture à trois niveaux - sécurité renforcée pour vos applications https://blog.42.nl/articles/introducing-a-security-layer-in-your-application-architecture/
Re: Conception orientée objet utilisant UML Si vous voulez vraiment en savoir plus à ce sujet, c'est le meilleur livre du marché, Grady Booch était le père de UML http://dl.acm.org/citation.cfm ? id = 291167 & CFID = 241218549 & CFTOKEN = 82813028
Ou vérifiez avec bitmonkey. Il y a un groupe là-bas avec lequel je suis sûr que vous pourriez apprendre beaucoup.
>
>
Si vous avez besoin d'un conteneur Docker CakePHP avec MySQL, j'ai créé une image Docker à cet effet! Pas besoin de s'inquiéter de son installation. Ça marche!
Voici comment j'ai installé dans l'image basée sur Ubuntu:
https://github.com/marcellodesales/php-Apache-mysql-4-cakephp-docker/blob/master/Dockerfile#L8
RUN docker-php-ext-install mysql mysqli pdo pdo_mysql
La construction et l’exécution de votre application n’est qu’un processus en 2 étapes (étant donné que vous vous trouvez dans le répertoire actuel de l’application):
$ docker build -t myCakePhpApp .
$ docker run -ti myCakePhpApp