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

Недавно мне было предложено изменить свой код на использование 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, если это имеет значение.

Ответ 1

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

Между использованием PDO и mysql_ нет ограничений. Тем не менее вам нужно создать два подключения к вашей базе данных: один с mysql_ и один с использованием PDO.

Ответ 2

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

Установить 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 опубликовала script в переход на MySQLi. Я не знаю, может ли он быть настроен, но он официально.

Ответ 3

В принципе, ответ от Яни Хартикайнен прав! Я поддержал его ответ. То, что отсутствовало в моей системе (на основе 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/

Ответ 4

  • PDO обозначает объект данных PHP.
  • PDO_MYSQL - это драйвер, который будет реализовывать интерфейс между данными (база данных) и пользователем (слой под пользовательским интерфейсом, называемый "код сзади" ), доступ к вашему объекту данных, базе данных MySQL.

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

Но есть несколько нюансов к этому, о которых вы, возможно, и не подозревали.

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

Вы также можете закрепить свой сайт SQL injection с помощью слоя данных. Используя этот промежуточный слой, который является ТОЛЬКО "игроком", который разговаривает с самой базой данных, я уверен, что вы можете видеть, как это может быть гораздо более безопасным. Интерфейс для datalayer для базы данных, datalayer для базы данных для datalayer для интерфейса.

и

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

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

Re: MySQL Функции в url php dot net/manual/en/ref dot pdo-mysql dot 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. Там есть группа, я уверен, что вы могли бы многому научиться.

<Р →

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

<Р →

Ответ 5

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

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

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

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

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

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

Ответ 6

Сначала установите sudo apt-get install php*-mysql где * - это имя версии php, например 5.6, 7.0, 7.1, 7.2, а затем укажите

расширение = pdo.so а также расширение = pdo_mysql.so

в вашем .ini файле.