Установка драйвера 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
The
./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 injection С помощью данных слоя. Используя этот промежуточный уровень, который является единственным "игроком", который разговаривает с самой базой данных, я уверен, что вы можете увидеть, как это может быть гораздо более безопасным. Интерфейс для уровня данных в базу данных, уровень данных в базу данных уровень данных для интерфейса.
и:
внедряя лучшие практики при написании кода, Вы будете намного счастливее с результатом.
дополнительные источники:
Ре: 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
Если вам нужен контейнер CakePHP Docker с 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