Подтвердить что ты не робот

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

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

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

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

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

Раздел PDO в phpinfo():

PDO support      enabled
PDO drivers      no value

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

4b9b3361

Ответ 1

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

Ответ 2

Для тех, кто работает под 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 файл, он расположен в /etc/php/[version]/apache2/php.ini и найдите pdo_mysql. Вы можете найти что-то вроде этого

;extension=pdo_mysql.so

Измените это на это

extension=pdo_mysql.so

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

service apache2 restart

Убедитесь, что он доступен в вашем phpinfo()

Ответ 3

Сначала установите php-mysql

sudo apt-get install php7.0-mysql

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

sudo phpenmod pdo_mysql

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

sudo service apache2 restart 

Ответ 4

Сначала проверьте, поддерживает ли 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

; ...

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

Ответ 5

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

например:

extension_dir = "C:/php7/ext"

и uncomment

extension=php_mysqli.dll
extension=php_pdo_mysql.dll

Перезагрузите apache2.4, и он должен работать.

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

Ответ 6

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

    phpize

    ./configure

    сделать

    сделать установку (с правами root)

  • включить расширение = mysqli.so в файле php.ini
  • сделано!

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

Ответ 7

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

Надеюсь, это поможет!

Ответ 8

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

Так что просто удалите префикс "php_" из файла php.ini, а затем перезапустите службу httpd, и он работает как прелесть.

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

Ответ 9

Я начну с ответа, а затем с контекста. ПРИМЕЧАНИЕ. Это исправление было зарегистрировано выше, я просто повторяю его для всех, кто гуглит.

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

    phpize

    ./configure

    делать

    сделать установку (как root)

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

Это записывается как ответ отсюда (пожалуйста, добавьте его, если он вам тоже помог): fooobar.com/questions/229439/...

Контекст: я пытаюсь добавить 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 add-apt-repository -y ppa: ondrej/apache2 и получаю следующее: не найдены действительные данные OpenPGP.

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

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

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

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

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

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

Ответ 10

['class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=localhost:3306;dbname=testdb',
    'username' => 'user',
    'password' => 'password',
    'charset' => 'utf8',]

Это просто: просто укажите номер порта вместе с именем хоста и установите путь по умолчанию для sock в вашем пути к файлу mysql.sock в php.ini котором работает сервер.