it-swarm.com.ru

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

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

Я установил Ubuntu в Vagrant, используя ubuntu/trusty64 и PHP 7 RC 3 от Ондржея Сури ( 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

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

37
SmxCde

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

3
SmxCde

Для тех, кто работает под 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=pdo_mysql.so

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

extension=pdo_mysql.so

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

service Apache2 restart

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

81
Angel115

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

Sudo apt-get install php7.0-mysql

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

Sudo phpenmod pdo_mysql

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

Sudo service Apache2 restart 
19
StateLess

Во-первых, убедитесь, что в вашем 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

; ...

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

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

    phpize

    ./configure 

    make

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

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

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

2
micl

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

например:

extension_dir = "C:/php7/ext"

и раскомментируйте 

extension=php_mysqli.dll
extension=php_pdo_mysql.dll

Перезапустите Apache2.4, и он должен работать.

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

2
user1455180

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

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

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

1
Xorifelse

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

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

1
jgadrow

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

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

    phpize

    ./configure

    make

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

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

Отсюда записывается как ответ отсюда (пожалуйста, подпишите его, если он вам тоже помог): 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 add-apt-repository -y ppa: ondrej/Apache2 И получаю следующее: Не найдено действительных данных OpenPGP.

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

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, пытаюсь обойти это и ... у вас есть идея ... удар-моль. Я сдался и посмотрел, смогу ли я скомпилировать его, и нашел ответ, с которого начал. 

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

0
user3912517