Установка драйвера 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 файле.