Se me sugirió, no hace mucho, cambiar mi código para usar PDO con el fin de parametrizar mis consultas y guardar HTML de forma segura en la base de datos.
Bueno, aquí están los principales problemas:
Miré http://php.net/manual/en/ref.pdo-mysql.php , y realmente no llegué a donde debería poner esa
$ ./configure --with-pdo-mysql
cadena ...El sitio que estoy construyendo en realidad solo requiere PDO para una página. Si bien puedo considerar volver a escribirlo, tomaría un tiempo y necesito que las páginas se ejecuten pronto, por lo que no puedo apagar MySQL por completo. Si instalo PDO, ¿podré seguir utilizando
mysql_*
controladores?
El servidor en cuestión está ejecutando PHP Versión 5.4.6-1ubuntu1 y Apache / 2.2.22 (Ubuntu). También estoy ejecutando una base de datos phpMyAdmin, si es importante.
sudo apt-get update
luego ejecute la instalación original desde la respuesta.sudo apt-get install php-mysql
Esa es una buena pregunta, pero creo que simplemente malinterpretas lo que lees.
Instalar PDO
El
./config --with-pdo-mysql
es algo que tienes que poner en solamente si compila su propio código PHP. Si lo instala con administradores de paquetes, solo tiene que usar la línea de comando proporcionada por Jany Hartikainen:sudo apt-get install php5-mysql
y tambiénsudo apt-get install pdo-mysql
Compatibilidad con mysql_
Aparte del hecho de que mysql_ está realmente desaconsejado, ambos son independientes. Si usa PDO, mysql_ no está implicado, y si usa mysql_, no se requiere PDO.
Si apaga PDO sin cambiar ninguna línea en su código, no tendrá ningún problema. Pero desde que comenzó a conectarse y escribir consultas con PDO, debe conservarlo y renunciar a mysql_.
Hace varios años, el equipo de MySQL publicó un script para migrar a MySQLi . No sé si se puede personalizar, pero es oficial.
fuente
¡Básicamente, la respuesta de Jani Hartikainen es correcta! Elegí su respuesta. Lo que faltaba en mi sistema (basado en Ubuntu 15.04) era habilitar la extensión PDO en mi php.ini
reinicie el servidor web (por ejemplo, con "sudo service apache2 restart") -> cada multa :-)
Para encontrar dónde se encuentra su archivo php.ini activo actual, puede usar phpinfo () o algunas otras sugerencias desde aquí: https://www.ostraining.com/blog/coding/phpini-file/
fuente
extension=pdo_mysql.dll
, así que descomenté eso y reinicié Apache y funcionó.sudo apt-get install...
comandos y nada funcionó, finalmente agregando estas dos líneas al php.ini lo hice. Sólo mencionar el comando reiniciar el servidor Apache que se ejecuta después de guardar:sudo service apache2 restart
. Y mi ruta de archivo php.ini era/etc/php/7.0/apache2/php.ini
(SO: Lubuntu 16.04, análogo a Ubuntu para estos fines). Ejecutarsudo gedit <fullpath>
para editarlo. (gedit o geany o cualquier editor de texto en su sistema)Al principio, instale las partes PDO necesarias ejecutando el comando
sudo apt-get install php*-mysql
donde * es un nombre de versión de php como 5.6, 7.0, 7.1, 7.2 Después de la instalación, debe mencionar (descomentar si ya está allí) estas dos declaracionesen su archivo .ini y reinicie su servidor por comando
fuente
php*-mysql
. ¡Lo estaba intentandophp-mysql
y fuephp7-mysql
en vano y luego esta respuesta selló el trato! ¡Gracias!El propósito de usar esto es implementar una capa adicional de seguridad entre la interfaz de usuario y la base de datos. Al usar esta capa, los datos se pueden normalizar antes de insertarse en su estructura de datos. (Las mayúsculas son mayúsculas, sin espacios iniciales ni finales, todas las fechas están formadas correctamente).
Pero hay algunos matices en esto que quizás no conozca.
En primer lugar, hasta ahora, probablemente haya escrito todas sus consultas en algo similar a la URL y haya pasado los parámetros utilizando la propia URL. Usando el PDO, todo esto se hace bajo el nivel de interfaz de usuario. La interfaz de usuario entrega el balón al PDO que lo lleva al campo y lo coloca en la base de datos para un TOUCHDOWN de 7 puntos ... obtiene siete puntos, porque lo consiguió y lo hizo de manera mucho más segura que pasar información a través de la URL .
También puede reforzar su sitio para la inyección SQL mediante el uso de una capa de datos. Al usar esta capa intermedia que es el ÚNICO 'jugador' que habla con la base de datos, estoy seguro de que puede ver cómo esto podría ser mucho más seguro. Interfaz a capa de datos a base de datos, capa de datos a base de datos a capa de datos a interfaz.
Y:
Al implementar las mejores prácticas mientras escribe su código, estará mucho más satisfecho con el resultado.
Fuentes adicionales:
Re: Funciones de MySQL en la url php dot net / manual / en / ref dot pdo-mysql dot php
Re: arquitectura de tres niveles: agregando seguridad a sus aplicaciones https://blog.42.nl/articles/introducing-a-security-layer-in-your-application-architecture/
Re: Diseño orientado a objetos usando UML Si realmente quieres aprender más sobre esto, este es el mejor libro del mercado, Grady Booch fue el padre de UML http://dl.acm.org/citation.cfm?id=291167&CFID = 241218549 y CFTOKEN = 82813028
O consulte con bitmonkey. Hay un grupo con el que estoy seguro de que podrías aprender mucho.
>
Si supiéramos lo que realmente significa la terminología, no necesitaríamos aprender nada.
>
fuente
Si necesita un contenedor Docker de CakePHP con MySQL, ¡he creado una imagen de Docker para ese propósito! No hay necesidad de preocuparse por configurarlo. ¡Simplemente funciona!
Así es como lo instalé en una imagen basada en Ubuntu:
https://github.com/marcellodesales/php-apache-mysql-4-cakephp-docker/blob/master/Dockerfile#L8
La construcción y ejecución de su aplicación es solo un proceso de 2 pasos (considerando que se encuentra en el directorio actual de la aplicación):
fuente
sudo /etc/init.d/apache2 restart
esté ejecutando: es necesario reiniciar el servidor Apache