PHP 7 RC3: Как установить отсутствующий MySQL PDO

Я пытаюсь настроить веб-сервер с PHP 7 RC3 + Nginx on Ubuntu 14.04 (для тестовых целей).

Я установил Ubuntu в Vagrant с помощью ubuntu/trusty64 и PHP 7 RC 3 от Ondřej Surý (https://launchpad.net / ~ondrej / + архив / ubuntu / php-7.0).

Я не могу найти способ установки MySQL PDO (PHP видит PDO класс, но не все, что связано с MySQL, как PDO::MYSQL_ATTR_DIRECT_QUERY etc.)

похоже, что нет lib php7.0-mysql (по аналогии со стандартной php5-mysqlnd и php7.0-fpm etc. от Ondřej)

раздел PDO на phpinfo():

PDO support      enabled
PDO drivers      no value

как я могу получить его?

9 ответов


для thoses под управлением Linux с apache2 вам необходимо установить php-mysql

apt-get install php-mysql

или если вы используете ubuntu 16.04 или выше, просто выполните следующую команду, не нужно редактировать php.ini-файл

apt-get install php7.0-mysql

если вы используете ubuntu 15.10 или ниже:

редактировать php.ini и поиск pdo_mysql вы могли бы найти что-то вроде этого

;extension=php_pdo_mysql.so

изменить его это

extension=pdo_mysql.so

сохраните файл и перезапустите Apache

service apache2 restart

проверьте, что он доступен в вашей phpinfo ()


первая установка php-mysql

sudo apt-get install php7.0-mysql

затем включите модуль

sudo phpenmod pdo_mysql

и перезапустить apache

sudo service apache2 restart 

С eggyal не предоставил свой комментарий в качестве ответа после того, как он дал правильный совет в комментарии - я размещаю его здесь: в моем случае мне пришлось установить модуль php-mysql. Подробные сведения см. В комментариях к вопросу.


во-первых, проверьте, если ваш PHP.ini имеет расширение включено "php_pdo_mysql" и "php_mysqli" и путь "extension_dir" является правильным. Если вам нужна одна из вышеуказанных конфигураций, вы должны перезапустить php-fpm, чтобы применить изменения.

в моем случае (где я использую ОС Windows в компании, я действительно предпочитаю OSX или Linux), я решил проблему, поместив эти значения в php.ini:

; ...

extension_dir = "ext"

; ... 

extension=php_mysqli.dll
extension=php_pdo_mysql.dll

; ...

надеюсь, это поможет.


Если вы находитесь в windows, и ваша папка php не находится на вашем пути, вы установили абсолютный каталог в своем php.ini

например:

extension_dir = "C:/php7/ext"

и раскомментировать

extension=php_mysqli.dll
extension=php_pdo_mysql.dll

перезапустить apache2.4 и это должно работать.

надеюсь, это поможет.


  1. загрузите исходный код php 7 и извлеките его.
  2. откройте ваш терминал
  3. плавайте в каталог ext/mysqli
  4. использовать команды:

    phpize

    ./настроить

    сделать

    make install (как root)

  5. включить расширение=mysqli.Итак, в вашем php.ini-файл
  6. готово!

это сработало для меня


У меня была, в значительной степени, та же проблема. Я смог увидеть, что PDO включен, но у меня не было доступных драйверов (используя PHP 7-RC4). Мне удалось решить проблему, добавив расширение php_pdo_mysql к тем, которые были включены.

надеюсь, что это помогает!


была та же проблема, решена путем фактического включения расширения в php.ini-файл с правильным именем файла. Он был указан как php_pdo_mysql.Итак, но имя модуля в/lib/php / modules называлось просто pdo_mysql.так что

поэтому просто удалите префикс "php_" из php.ini и перезапустите службу httpd и он работал как шарм.

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


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

  1. загрузите исходный код php 7 и извлеките его.
  2. откройте ваш терминал
  3. перейдите в каталог ext/pdo_mysql
  4. использовать команды:

    phpize

    ./настроить

    сделать

    make install (как root)

  5. включить расширение=mysqli.Итак, в вашем php.ini-файл

это регистрируется как ответ отсюда (пожалуйста, upvote его, если это помогло вам тоже):https://stackoverflow.com/a/39277373/3912517

контексте: Я пытаюсь добавить LimeSurvey в стандартный Докер WordPress. Единственная точка, удерживающая меня, - это "библиотека драйверов PHP PDO", которая "не найдена"

php -i | grep PDO                                                                                  
PHP Warning:  PHP Startup: Unable to load dynamic library 'pdo_odbc' (tried: /usr/local/lib/php/extensions/no-debug-non-zts-20170718/pdo_odbc (/usr/local/lib/php/extensions/no-debug-non-zts-20170718/pdo_odbc: cannot open shared object file: No such file or directory), /usr/local/lib/php/extensions/no-debug-non-zts-20170718/pdo_odbc.so (/usr/local/lib/php/extensions/no-debug-non-zts-20170718/pdo_odbc.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP Warning:  Module 'mysqli' already loaded in Unknown on line 0
PDO
PDO support => enabled
PDO drivers => sqlite
PDO Driver for SQLite 3.x => enabled

Ubuntu 16 (Ubuntu 7.3.0)

apt-get install php7.0-mysql

результат:

Package 'php7.0-mysql' has no installation candidate

получить инструкции, говорящие, что все, что мне нужно сделать, это запустить это:

add-apt-repository -y ppa:ondrej/apache2

но тогда я получаю это:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc5 in position 223: ordinal not in range(128)

поэтому я пытаюсь заставить какой-то тип UTF: Значение lc_all=C. В кодировке UTF-8 добавить-apt-репозитории -г НПА:Ондрей/apache2 не и я понимаю это.: не найдено допустимых данных OpenPGP.

следуйте инструкциям, чтобы запустить этот: apt-получить обновление и я понимаю это.: Err: 14 http://ppa.launchpad.net/ondrej/apache2/ubuntu космические / основные пакеты amd64 404 Не Найдено Err: 15 http://ppa.launchpad.net/ondrej/php/ubuntu космические / основные пакеты amd64 404 Не Найдено и-я думаю из - за этого-я тогда получаю:

The repository 'http://ppa.launchpad.net/ondrej/apache2/ubuntu cosmic Release' does not have a Release file.

на этом этапе я все еще получаю это на apt-get update:

Package 'php7.0-mysql' has no installation candidate.

Я начинаю пытаться добавить в PHP-библиотеки, получил проблемы с Unicode, попытался обойти это и.... вы поняли идею... вжик-а-моль. Я сдался и посмотрел, смогу ли я его скомпилировать, и нашел ответ, с которого начал.

вам может быть интересно, почему я написал так много? Так что любой, кто гуглит, может найти это решение (включая меня!).