Установка драйвера PDO на сервере MySQL Linux

не так давно мне предложили изменить код, чтобы использовать PDO для параметризации моих запросов и безопасного сохранения HTML в базе данных.

Ну, вот основные проблемы:

  1. Я посмотрел на http://php.net/manual/en/ref.pdo-mysql.php, и я действительно не понимаю, куда я должен положить это $ ./configure --with-pdo-mysql строку...

  2. сайт, который я создаю, на самом деле требует PDO только для одной страницы. Хотя я могу подумать о переписывании это займет некоторое время, и мне нужно, чтобы страницы были запущены в ближайшее время, поэтому я не могу полностью отключить MySQL. Если я установлю PDO, смогу ли я использовать mysql_* обработчики?

на рассматриваемом сервере работает PHP версии 5.4.6-1ubuntu1 и Apache/2.2.22 (Ubuntu). Я также запускаю базу данных phpMyAdmin, если это имеет значение.

6 ответов


на Ubuntu вы должны иметь возможность установить необходимые части PDO из apt с помощью sudo apt-get install php5-mysql

нет никаких ограничений между использованием PDO и mysql_ одновременно. Однако вам нужно будет создать два соединения с вашей БД, одно с mysql_ и одно с помощью PDO.


это хороший вопрос, но я думаю, что вы просто неправильно понимаете то, что читаете.

установить 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

extension=pdo.so
extension=pdo_mysql.so

перезапустите веб-сервер (например, с помощью " sudo service apache2 restart") - >каждый штраф : -)

чтобы найти, где ваш текущий активный php.ini файл находится Вы можете использовать phpinfo() или некоторые другие подсказки отсюда:https://www.ostraining.com/blog/coding/phpini-file/


  1. PDO означает объект данных PHP.
  2. PDO_MYSQL-это драйвер, который будет реализовывать интерфейс между dataobject (database) и пользовательским вводом (слой под пользовательским интерфейсом под названием "Code behind"), обращающимся к вашему объекту данных, базе данных MySQL.

цель использования это реализовать дополнительный уровень безопасности между пользовательским интерфейсом и базой данных. Используя этот слой, данные можно нормализовать перед вставкой в ваша структура данных. (Заглавные буквы-это заглавные буквы, без ведущих или конечных пробелов, все даты правильно сформированы.)

но есть несколько нюансов, о которых вы, возможно, не знаете.

прежде всего, до сих пор вы, вероятно, написали все свои запросы в чем-то похожем на URL, и вы передаете параметры, используя сам URL. Используя PDO, все это делается на уровне пользовательского интерфейса. Пользовательский интерфейс передает мяч PDO, который несет его вниз поле и устанавливает его в базу данных для 7-точечного приземления.. он получает семь очков, потому что он получил его там и сделал это намного безопаснее, чем передача информации через URL.

вы также можете укрепить свой сайт до SQL-инъекций С помощью данных слоя. Используя этот промежуточный уровень, который является единственным "игроком", который разговаривает с самой базой данных, я уверен, что вы можете увидеть, как это может быть гораздо более безопасным. Интерфейс к datalayer к базе данных, datalayer к базе данных к уровень данных для интерфейса.

и:

внедряя лучшие практики при написании кода, Вы будете намного счастливее с результатом.

дополнительные источники:

Ре: MySQL-функции в URL в PHP точка нетто/руководство по эксплуатации/ванными/Реф дот ПДО-точка с MySQL в PHP

Re: трехуровневая архитектура-добавление безопасности к вашему приложения https://blog.42.nl/articles/introducing-a-security-layer-in-your-application-architecture/

Re: объектно-ориентированный дизайн с использованием UML Если вы действительно хотите узнать больше об этом, это лучшая книга на рынке, Грейди Буч был отцом UML http://dl.acm.org/citation.cfm?id=291167&CFID=241218549&CFTOKEN=82813028

или проверьте с помощью bitmonkey. Там есть группа, я уверен, вы могли бы многому научиться. с.

>

если бы мы знали, что на самом деле означает терминология, нам не нужно было бы ничего изучать.

>


сначала установите необходимые части PDO, выполнив команду sudo apt-get install php*-mysql где * - это имя версии php, такое как 5.6, 7.0, 7.1, 7.2 после установки вам нужно упомянуть(раскомментировать, если уже есть) эти два оператора

extension=pdo.so
extension=pdo_mysql.so

в вашей .ini-файл и перезагрузите сервер по команде

sudo service apache2 restart

Если вам нужен контейнер Docker CakePHP с MySQL, я создал образ Docker для этой цели! Не нужно беспокоиться о настройке. Это просто работает!

вот как я установил в Ubuntu-based изображение:

https://github.com/marcellodesales/php-apache-mysql-4-cakephp-docker/blob/master/Dockerfile#L8

RUN docker-php-ext-install mysql mysqli pdo pdo_mysql

создание и запуск приложения-это всего лишь 2-х шаговый процесс (учитывая, что вы находитесь в текущем каталоге приложения):

$ docker build -t myCakePhpApp .
$ docker run -ti myCakePhpApp