Не так давно мне предложили изменить мой код для использования PDO, чтобы параметризовать мои запросы и безопасно сохранять HTML в базе данных.
Итак, вот основные проблемы:
Я посмотрел http://php.net/manual/en/ref.pdo-mysql.php , и я действительно не понимаю, куда мне поместить эту
$ ./configure --with-pdo-mysql
строку ...Сайт, который я создаю, требует только PDO для одной страницы. Хотя я могу подумать о его переписывании, это займет некоторое время, и мне нужно, чтобы страницы запускались в ближайшее время, поэтому я не могу полностью отключить MySQL. Если я установлю PDO, смогу ли я использовать
mysql_*
обработчики?
Рассматриваемый сервер работает под управлением PHP версии 5.4.6-1ubuntu1 и Apache / 2.2.22 (Ubuntu). Я также использую базу данных phpMyAdmin, если это важно.
sudo apt-get update
затем запустите исходную установку из ответа.sudo apt-get install php-mysql
Это хороший вопрос, но я думаю, вы просто неправильно понимаете то, что читаете.
Установить PDO
Это
./config --with-pdo-mysql
то, что вам нужно надеть, только если вы скомпилируете свой собственный PHP-код. Если вы устанавливаете его с помощью диспетчеров пакетов, вам просто нужно использовать командную строку, предоставленную Jany Hartikainen:sudo apt-get install php5-mysql
а такжеsudo apt-get install pdo-mysql
Совместимость с mysql_
Помимо того факта, что mysql_ действительно не рекомендуется, они оба независимы. Если вы используете PDO, mysql_ не задействован, а если вы используете mysql_, PDO не требуется.
Если вы отключите PDO, не изменив ни одной строчки в коде, у вас не будет проблем. Но поскольку вы начали подключаться и писать запросы с помощью PDO, вы должны оставить его и отказаться от mysql_.
Несколько лет назад команда MySQL опубликовала сценарий для перехода на MySQLi . Не знаю, можно ли его настроить, но это официально.
источник
В общем, ответ Яни Хартикайнен правильный! Я поддержал его ответ. В моей системе (на основе Ubuntu 15.04) не хватало включения расширения PDO в моем php.ini.
перезапустите веб-сервер (например, с помощью "sudo service apache2 restart") -> каждый штраф :-)
Чтобы узнать, где находится ваш текущий активный файл php.ini, вы можете использовать phpinfo () или некоторые другие подсказки отсюда: https://www.ostraining.com/blog/coding/phpini-file/
источник
extension=pdo_mysql.dll
, поэтому я раскомментировал это и перезапустил apache, и он сработал.sudo apt-get install...
выполнил дюжину команд, и ничего не получилось, наконец, добавление этих двух строк в php.ini сделало это. Просто упоминая команду перезапуска сервера Apache , который вы запускаете после сохранения:sudo service apache2 restart
. И мой путь к файлу php.ini был/etc/php/7.0/apache2/php.ini
(ОС: Lubuntu 16.04, аналог Ubuntu для этих целей). Бегиsudo gedit <fullpath>
редактировать. (gedit или geany или любой текстовый редактор в вашей системе)Сначала установите необходимые части PDO, выполнив команду,
sudo apt-get install php*-mysql
где * - это имя версии php, например 5.6, 7.0, 7.1, 7.2. После установки вам нужно упомянуть (раскомментируйте, если уже есть) эти два операторав вашем .ini файле и перезапустите сервер командой
источник
php*-mysql
. Я пыталсяphp-mysql
иphp7-mysql
без толка , а затем этот ответ запечатанной сделки! Спасибо!Целью использования этого является реализация дополнительного уровня безопасности между пользовательским интерфейсом и базой данных. Используя этот уровень, данные могут быть нормализованы перед вставкой в вашу структуру данных. (Заглавные буквы - это заглавные буквы, без начальных и конечных пробелов, все даты в правильном формате.)
Но есть несколько нюансов, о которых вы, возможно, не подозреваете.
Прежде всего, до сих пор вы, вероятно, писали все свои запросы в чем-то похожем на URL-адрес, и вы передаете параметры, используя сам URL. Используя PDO, все это делается на уровне пользовательского интерфейса. Пользовательский интерфейс передает мяч PDO, который переносит его на поле и помещает его в базу данных для 7-балльного TOUCHDOWN .. он получает семь баллов, потому что он получил это там и сделал гораздо более безопасный, чем передача информации через URL .
Вы также можете укрепить свой сайт для SQL-инъекций , используя уровень данных. Используя этот промежуточный уровень, который является ЕДИНСТВЕННЫМ «игроком», который общается с самой базой данных, я уверен, вы можете увидеть, как это может быть намного безопаснее. Интерфейс к уровню данных к базе данных, от уровня данных к базе данных к уровню данных к интерфейсу.
И:
Применяя передовой опыт при написании кода, вы будете намного более довольны результатом.
Дополнительные источники:
Re: Функции MySQL в URL-адресе php dot net / manual / en / ref dot pdo-mysql dot php
Re: трехуровневая архитектура - повышение безопасности ваших приложений https://blog.42.nl/articles/introduction-a-security-layer-in-your-application-architecture/
Re: объектно-ориентированный дизайн с использованием UML. Если вы действительно хотите узнать об этом больше, это лучшая книга на рынке. Грейди Буч был отцом UML http://dl.acm.org/citation.cfm?id=291167&CFID = 241218549 и CFTOKEN = 82813028
Или проверьте с помощью bitmonkey. Там есть группа, с которой, я уверен, вы могли бы многому научиться.
>
Если бы мы знали, что на самом деле означает эта терминология, нам не нужно было бы ничего изучать.
>
источник
Если вам нужен Docker-контейнер CakePHP с MySQL, я создал для этого образ Docker! Не нужно беспокоиться о настройке. Просто работает!
Вот как я установил образ на основе Ubuntu:
https://github.com/marcellodesales/php-apache-mysql-4-cakephp-docker/blob/master/Dockerfile#L8
Создание и запуск вашего приложения - это всего лишь двухэтапный процесс (учитывая, что вы находитесь в текущем каталоге приложения):
источник
sudo /etc/init.d/apache2 restart