Foi sugerido, não muito tempo atrás, alterar meu código para usar PDO a fim de parametrizar minhas consultas e salvar HTML com segurança no banco de dados.
Bem, aqui estão os principais problemas:
Eu olhei em http://php.net/manual/en/ref.pdo-mysql.php , e eu realmente não entendi onde devo colocar essa
$ ./configure --with-pdo-mysql
string ...O site que estou construindo, na verdade, requer apenas PDO para uma página. Embora eu possa considerar reescrevê-lo, demoraria um pouco e preciso que as páginas estejam sendo executadas em breve, então não posso desligar o MySQL completamente. Se eu instalar o PDO, ainda poderei usar
mysql_*
manipuladores?
O servidor em questão está executando o PHP versão 5.4.6-1ubuntu1 e Apache / 2.2.22 (Ubuntu). Também estou executando um banco de dados phpMyAdmin, se isso importa.
sudo apt-get update
e execute a instalação original a partir da resposta.sudo apt-get install php-mysql
Essa é uma boa pergunta, mas acho que você apenas entendeu mal o que leu.
Instale PDO
Isso
./config --with-pdo-mysql
é algo que você precisa colocar apenas se compilar seu próprio código PHP. Se você instalá-lo com gerenciadores de pacotes, basta usar a linha de comando fornecida por Jany Hartikainen:sudo apt-get install php5-mysql
e tambémsudo apt-get install pdo-mysql
Compatibilidade com mysql_
Além do fato de mysql_ ser realmente desencorajado, ambos são independentes. Se você usar PDO, mysql_ não está implicado e se você usar mysql_ PDO não é necessário.
Se você desligar o PDO sem alterar nenhuma linha em seu código, não terá problemas. Mas desde que você começou a conectar e escrever consultas com PDO, você tem que mantê-lo e desistir do mysql_.
Vários anos atrás, a equipe do MySQL publicou um script para migrar para o MySQLi . Não sei se pode ser customizado, mas é oficial.
fonte
Basicamente, a resposta de Jani Hartikainen está certa! Eu votei positivamente em sua resposta. O que faltava no meu sistema (baseado no Ubuntu 15.04) era habilitar a extensão PDO no meu php.ini
reinicie o servidor web (por exemplo, com "sudo service apache2 restart") -> cada multa :-)
Para descobrir onde seu arquivo php.ini ativo atual está localizado, você pode usar phpinfo () ou algumas outras dicas aqui: https://www.ostraining.com/blog/coding/phpini-file/
fonte
extension=pdo_mysql.dll
, então descomentei isso e reiniciei o apache e funcionou.sudo apt-get install...
comandos e nada funcionou, finalmente adicionando essas duas linhas ao php.ini fez isso. Apenas mencionar o reinício comando do servidor Apache que você executa depois de salvar:sudo service apache2 restart
. E o caminho do meu arquivo php.ini era/etc/php/7.0/apache2/php.ini
(OS: Lubuntu 16.04, análogo ao Ubuntu para esses fins). Corrasudo gedit <fullpath>
para editá-lo. (gedit ou geany ou qualquer editor de texto em seu sistema)Primeiro instale as partes PDO necessárias executando o comando
sudo apt-get install php*-mysql
onde * é o nome da versão do php como 5.6, 7.0, 7.1, 7.2. Após a instalação, você precisa mencionar (descomente se já estiver lá) essas duas declaraçõesem seu arquivo .ini e reinicie seu servidor por comando
fonte
php*-mysql
. Eu estava tentandophp-mysql
ephp7-mysql
sem sucesso e então essa resposta selou o acordo! Obrigado!O objetivo de usar isso é implementar uma camada adicional de segurança entre a interface do usuário e o banco de dados. Usando esta camada, os dados podem ser normalizados antes de serem inseridos em sua estrutura de dados. (Capitais são maiúsculas, sem espaços à esquerda ou à direita, todas as datas devidamente formadas.)
Mas existem algumas nuances que você pode não estar ciente.
Em primeiro lugar, até agora, você provavelmente escreveu todas as suas consultas em algo semelhante ao URL e passou os parâmetros usando o próprio URL. Usando o PDO, tudo isso é feito no nível da interface do usuário. A interface do usuário passa a bola para o PDO, que a carrega para o campo e a planta no banco de dados para um TOUCHDOWN de 7 pontos. .
Você também pode proteger seu site para injeção de SQL usando uma camada de dados. Ao usar essa camada intermediária que é o ÚNICO 'player' que fala com o próprio banco de dados, tenho certeza de que você pode ver como isso poderia ser muito mais seguro. Interface para camada de dados para banco de dados, camada de dados para banco de dados para camada de dados para interface.
E:
Ao implementar as melhores práticas ao escrever seu código, você ficará muito mais feliz com o resultado.
Fontes adicionais:
Re: Funções MySQL no url php ponto net / manual / en / ref ponto pdo-mysql ponto php
Re: arquitetura de três camadas - adicionando segurança aos seus aplicativos https://blog.42.nl/articles/introducing-a-security-layer-in-your-application-architecture/
Re: Projeto Orientado a Objetos usando UML Se você realmente deseja aprender mais sobre isso, este é o melhor livro do mercado, Grady Booch foi o pai da UML http://dl.acm.org/citation.cfm?id=291167&CFID = 241218549 & CFTOKEN = 82813028
Ou verifique com o bitmonkey. Há um grupo lá com quem tenho certeza que você poderia aprender muito.
>
Se soubéssemos o que a terminologia realmente significa, não precisaríamos aprender nada.
>
fonte
Se você precisa de um Container Docker CakePHP com MySQL, criei uma imagem Docker para esse propósito! Não precisa se preocupar em configurá-lo. Simplesmente funciona!
Veja como instalei uma imagem baseada no Ubuntu:
https://github.com/marcellodesales/php-apache-mysql-4-cakephp-docker/blob/master/Dockerfile#L8
Construir e executar seu aplicativo é apenas um processo de 2 etapas (considerando que você está no diretório atual do aplicativo):
fonte
sudo /etc/init.d/apache2 restart
é necessário reiniciar o servidor apache