Установка драйвера 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, если это имеет значение.
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/
- PDO означает объект данных PHP.
- 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 для этой цели! Не нужно беспокоиться о настройке. Это просто работает!
- GitHub:https://github.com/marcellodesales/php-apache-mysql-4-cakephp-docker
- DockerHub:https://hub.docker.com/r/marcellodesales/php-apache-cakephp-mysql/
вот как я установил в 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