Il n'y a pas longtemps, on m'a suggéré de changer mon code pour utiliser PDO afin de paramétrer mes requêtes et d'enregistrer en toute sécurité le HTML 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 sais pas vraiment où je devrais mettre cette
$ ./configure --with-pdo-mysql
chaîne ...Le site que je construis ne nécessite en fait qu'un PDO pour une page. Bien que je puisse envisager de le réécrire, cela prendrait un certain temps et j'ai besoin que les pages soient bientôt en cours d'exécution, donc je ne peux pas désactiver complètement MySQL. Si j'installe PDO, est-ce que je pourrai toujours utiliser des
mysql_*
gestionnaires?
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.
sudo apt-get update
puis exécutez l'installation d'origine à partir de la réponse.sudo apt-get install php-mysql
C'est une bonne question, mais je pense que vous comprenez mal ce que vous lisez.
Installer PDO
C'est
./config --with-pdo-mysql
quelque chose que vous ne devez mettre en place que 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 donnée par Jany Hartikainen:sudo apt-get install php5-mysql
et aussisudo apt-get install pdo-mysql
Compatibilité avec mysql_
Mis à part le fait que mysql_ est vraiment déconseillé, ils sont tous les 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 de votre code, vous n'aurez aucun problème. Mais depuis que vous avez commencé à vous connecter et à écrire des requêtes avec PDO, vous devez le garder 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.
la source
En gros, la réponse de Jani Hartikainen est juste! J'ai voté pour sa réponse. Ce qui manquait sur mon système (basé sur Ubuntu 15.04) était d'activer l'extension PDO dans mon php.ini
redémarrer 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 à partir d'ici: https://www.ostraining.com/blog/coding/phpini-file/
la source
extension=pdo_mysql.dll
, j'ai donc décommenté cela et redémarré Apache et cela a fonctionné.sudo apt-get install...
commandes et rien n'a fonctionné, finalement l'ajout de ces deux lignes au php.ini l'a fait. Il suffit de mentionner la commande de redémarrage du serveur apache que vous exécutez après l' enregistrement:sudo service apache2 restart
. Et mon chemin de fichier php.ini était/etc/php/7.0/apache2/php.ini
(OS: Lubuntu 16.04, analogue à Ubuntu à ces fins). Exécutezsudo gedit <fullpath>
pour le modifier. (gedit ou geany ou n'importe quel éditeur de texte sur votre système)Au début, installez les parties PDO nécessaires en exécutant la commande
sudo apt-get install php*-mysql
où * est un nom de version de php comme 5.6, 7.0, 7.1, 7.2 Après l'installation, vous devez mentionner (décommenter si est déjà là) ces deux déclarationsdans votre fichier .ini et redémarrez votre serveur par commande
la source
php*-mysql
. J'essayaisphp-mysql
etphp7-mysql
en vain et cette réponse a scellé l'affaire! Merci!Le but de son 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 majuscules sont des majuscules, pas d'espaces de début ou de fin, toutes les dates sont correctement formées.)
Mais il y a quelques nuances à cela dont vous n'êtes peut-être pas au courant.
Tout d'abord, jusqu'à présent, vous avez probablement écrit toutes vos requêtes dans quelque chose de similaire à l'URL, et vous passez les paramètres en utilisant l'URL elle-même. En utilisant le PDO, tout cela se fait sous le niveau de l'interface utilisateur. L'interface utilisateur transmet la balle au PDO qui la transporte dans le champ et la plante dans la base de données pour un TOUCHDOWN en 7 points .. il obtient sept points, car il l'a obtenu là-bas et a fait beaucoup plus en toute sécurité que de transmettre des informations via l'URL .
Vous pouvez également renforcer votre site à l' 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 vers datalayer vers base de données, datalayer vers base de données vers datalayer vers interface.
Et:
En mettant en œuvre les meilleures pratiques lors de l'écriture de votre code, vous serez beaucoup plus satisfait du résultat.
Sources supplémentaires:
Re: Fonctions MySQL dans l'url php dot net / manual / en / ref dot pdo-mysql dot php
Re: architecture à trois niveaux - ajouter de la sécurité à vos applications https://blog.42.nl/articles/introducing-a-security-layer-in-your-application-architecture/
Re: Object Oriented Design using UML Si vous voulez vraiment en savoir plus à ce sujet, c'est le meilleur livre du marché, Grady Booch est le père de UML http://dl.acm.org/citation.cfm?id=291167&CFID = 241218549 et CFTOKEN = 82813028
Ou vérifiez avec bitmonkey. Il y a un groupe avec lequel je suis sûr que vous pourriez apprendre beaucoup de choses.
>
Si nous savions ce que signifiait vraiment la terminologie, nous n'aurions rien besoin d'apprendre.
>
la source
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 sa configuration. Cela fonctionne juste!
Voici comment j'ai installé dans une image basée sur Ubuntu:
https://github.com/marcellodesales/php-apache-mysql-4-cakephp-docker/blob/master/Dockerfile#L8
La création et l'exécution de votre application ne sont qu'un processus en 2 étapes (étant donné que vous êtes dans le répertoire actuel de l'application):
la source
sudo /etc/init.d/apache2 restart
est nécessaire pour redémarrer le serveur Apache