У меня есть VPS, полученный из образа под названием CentOS 6.4 x64, Nginx, php-fpm, MariaDB. PHP и MariaDB установлены, но похоже, что на PHP не установлен драйвер MySQL. Я сначала попробовал добавить
extension=mysql.so
к моему php.ini
но это дает мне следующую ошибку:
Starting php-fpm: [12-Dec-2013 17:23:27] NOTICE: PHP message: PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/mysql.so' - /usr/lib64/php/modules/mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0
Я тогда попробовал yum install php-mysql
но получите следующее:
Resolving Dependencies
--> Running transaction check
---> Package php-mysql.x86_64 0:5.4.23-1.el6.remi will be installed
--> Processing Dependency: php-pdo(x86-64) = 5.4.23-1.el6.remi for package: php-mysql-5.4.23-1.el6.remi.x86_64
--> Processing Dependency: libmysqlclient.so.18(libmysqlclient_18)(64bit) for package: php-mysql-5.4.23-1.el6.remi.x86_64
Package mysql-libs-5.5.35-1.el6.remi.x86_64 is obsoleted by MariaDB-shared-5.5.32-1.i386 which is already installed
--> Processing Dependency: libmysqlclient.so.18(libmysqlclient_16)(64bit) for package: php-mysql-5.4.23-1.el6.remi.x86_64
Package mysql-libs-5.5.35-1.el6.remi.x86_64 is obsoleted by MariaDB-shared-5.5.32-1.i386 which is already installed
--> Processing Dependency: libmysqlclient.so.18()(64bit) for package: php-mysql-5.4.23-1.el6.remi.x86_64
Package mysql-libs-5.5.35-1.el6.remi.x86_64 is obsoleted by MariaDB-shared-5.5.32-1.i386 which is already installed
--> Finished Dependency Resolution
Error: Package: php-mysql-5.4.23-1.el6.remi.x86_64 (remi)
Requires: libmysqlclient.so.18()(64bit)
Available: compat-mysql55-5.5.11-1.el6.remi.x86_64 (remi-test)
libmysqlclient.so.18()(64bit)
Available: compat-mysql55-5.5.34-1.el6.remi.x86_64 (remi-test)
libmysqlclient.so.18()(64bit)
Available: mysql-libs-5.5.34-1.el6.remi.x86_64 (remi)
libmysqlclient.so.18()(64bit)
Available: mysql-libs-5.5.35-1.el6.remi.x86_64 (remi)
libmysqlclient.so.18()(64bit)
Available: mysql-libs-5.1.71-1.el6.i686 (base)
Not found
Error: Package: php-mysql-5.4.23-1.el6.remi.x86_64 (remi)
Requires: libmysqlclient.so.18(libmysqlclient_16)(64bit)
Available: compat-mysql55-5.5.11-1.el6.remi.x86_64 (remi-test)
libmysqlclient.so.18(libmysqlclient_16)(64bit)
Available: compat-mysql55-5.5.34-1.el6.remi.x86_64 (remi-test)
libmysqlclient.so.18(libmysqlclient_16)(64bit)
Available: mysql-libs-5.5.34-1.el6.remi.x86_64 (remi)
libmysqlclient.so.18(libmysqlclient_16)(64bit)
Available: mysql-libs-5.5.35-1.el6.remi.x86_64 (remi)
libmysqlclient.so.18(libmysqlclient_16)(64bit)
Available: mysql-libs-5.1.71-1.el6.i686 (base)
Not found
Error: Package: php-mysql-5.4.23-1.el6.remi.x86_64 (remi)
Requires: libmysqlclient.so.18(libmysqlclient_18)(64bit)
Available: compat-mysql55-5.5.11-1.el6.remi.x86_64 (remi-test)
libmysqlclient.so.18(libmysqlclient_18)(64bit)
Available: compat-mysql55-5.5.34-1.el6.remi.x86_64 (remi-test)
libmysqlclient.so.18(libmysqlclient_18)(64bit)
Available: mysql-libs-5.5.34-1.el6.remi.x86_64 (remi)
libmysqlclient.so.18(libmysqlclient_18)(64bit)
Available: mysql-libs-5.5.35-1.el6.remi.x86_64 (remi)
libmysqlclient.so.18(libmysqlclient_18)(64bit)
Available: mysql-libs-5.1.71-1.el6.i686 (base)
Not found
Error: Package: php-mysql-5.4.23-1.el6.remi.x86_64 (remi)
Requires: php-pdo(x86-64) = 5.4.23-1.el6.remi
Installed: php-pdo-5.5.0-1.el6.remi.x86_64 (@remi-test)
php-pdo(x86-64) = 5.5.0-1.el6.remi
Available: php-pdo-5.3.3-26.el6.x86_64 (base)
php-pdo(x86-64) = 5.3.3-26.el6
Available: php-pdo-5.3.3-27.el6_5.x86_64 (updates)
php-pdo(x86-64) = 5.3.3-27.el6_5
Available: php-pdo-5.4.22-1.el6.remi.x86_64 (remi)
php-pdo(x86-64) = 5.4.22-1.el6.remi
Available: php-pdo-5.4.23-1.el6.remi.x86_64 (remi)
php-pdo(x86-64) = 5.4.23-1.el6.remi
You could try using --skip-broken to work around the problem
** Found 3 pre-existing rpmdb problem(s), 'yum check' output follows:
2:postfix-2.6.6-2.2.el6_1.x86_64 has missing requires of libmysqlclient.so.16()(64bit)
2:postfix-2.6.6-2.2.el6_1.x86_64 has missing requires of libmysqlclient.so.16(libmysqlclient_16)(64bit)
2:postfix-2.6.6-2.2.el6_1.x86_64 has missing requires of mysql-libs
Что я должен делать? Конечно, я не хочу устанавливать сам MySQL, только драйвер PHP.
Примечание: это кросс-пост от https://stackoverflow.com/questions/20561527/install-php-mysql-to-use-mariadb, но, возможно, он здесь лучше подходит, чем StackOverflow
После предложения Джона я попробовал yum install php-mysql --disablerepo=remi
. Однако это все еще доставляло мне больше проблем:
Error: Package: php-mysql-5.3.3-27.el6_5.x86_64 (updates)
Requires: libmysqlclient.so.16(libmysqlclient_16)(64bit)
Available: mysql-libs-5.1.71-1.el6.x86_64 (base)
libmysqlclient.so.16(libmysqlclient_16)(64bit)
Error: Package: php-mysql-5.3.3-27.el6_5.x86_64 (updates)
Requires: libmysqlclient.so.16()(64bit)
Available: mysql-libs-5.1.71-1.el6.x86_64 (base)
libmysqlclient.so.16()(64bit)
Error: Package: php-mysql-5.3.3-27.el6_5.x86_64 (updates)
Requires: php-common(x86-64) = 5.3.3-27.el6_5
Installed: php-common-5.5.0-1.el6.remi.x86_64 (@remi-test)
php-common(x86-64) = 5.5.0-1.el6.remi
Available: php-common-5.3.3-26.el6.x86_64 (base)
php-common(x86-64) = 5.3.3-26.el6
Available: php-common-5.3.3-27.el6_5.x86_64 (updates)
php-common(x86-64) = 5.3.3-27.el6_5
Если я попробую yum install php-mysqlnd
тогда ошибки зависимости уменьшаются:
Error: Package: php-mysqlnd-5.4.23-1.el6.remi.x86_64 (remi)
Requires: php-pdo(x86-64) = 5.4.23-1.el6.remi
Installed: php-pdo-5.5.0-1.el6.remi.x86_64 (@remi-test)
php-pdo(x86-64) = 5.5.0-1.el6.remi
Available: php-pdo-5.3.3-26.el6.x86_64 (base)
php-pdo(x86-64) = 5.3.3-26.el6
Available: php-pdo-5.3.3-27.el6_5.x86_64 (updates)
php-pdo(x86-64) = 5.3.3-27.el6_5
Available: php-pdo-5.4.22-1.el6.remi.x86_64 (remi)
php-pdo(x86-64) = 5.4.22-1.el6.remi
Available: php-pdo-5.4.23-1.el6.remi.x86_64 (remi)
php-pdo(x86-64) = 5.4.23-1.el6.remi
Итак, все, что мне нужно, чтобы найти какой-то источник для php-mysqlnd 5.5, который, по-видимому, недоступен в remi-test
. Есть идеи, где я могу это найти? Мне нужен только этот конкретный пакет, поэтому, может быть, мне просто скачать его и собрать из исходников?
Что ж, мне наконец удалось решить эту проблему, добавив remi-php55
репозиторий. Короче, я добавил в /etc/yum.repos.d/remi.repo
:
[remi-php55]
name=Les RPM de remi de PHP 5.5 pour Enterprise Linux 6 - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/6/php55/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/6/php55/mirror
# WARNING: If you enable this repository, you must also enable "remi"
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
[remi-php55-debuginfo]
name=Les RPM de remi de PHP 5.5 pour Enterprise Linux 6 - $basearch - debuginfo
baseurl=http://rpms.famillecollet.com/enterprise/6/debug-php55/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
Затем приступил к установке с помощью команды: yum install --enablerepo=remi-php55 php-mysqlnd
Вы установили PHP 5.5 из remi-test
репозиторий, но похоже, что это репозиторий больше не включен. Вот почему неправильная старая версия php-mysql
предлагается к установке. Попробуйте включить remi-test
репо.
yum --enablerepo=remi-test install php-mysql
Я только что обнаружил ту же проблему с моей установкой chroot Apache на CentOS Linux для проекта Yii2. Кажется, это просто потому, что модуль PHP pdo_mysql.so ожидает открытия libmysqlclient.so.18 в / usr / lib64, но на самом деле mariadb уже СОДЕРЖИТ его в / usr / lib64 / mysql. Исправить просто так:
# ln -s /usr/lib64/mysql/libmysqlclient.so.18.0.0 /usr/lib64/libmysqlclient.so.18
Похоже, некоторые пакеты из remi
репозиторий играет с вашими требованиями. Для этой команды попробуйте отключить это репо: yum install php-mysql --disablerepo=remi
. Это должно дать вам нужный пакет, хотя в будущем у вас могут возникнуть другие проблемы с репозиторием remi.
Моя среда немного отличается от вашей, так как я столкнулся с проблемой на CentOS 7
, но для Requires: libmysqlclient.so.16(libmysqlclient_16)(64bit)
проблема сработала.
Я установил MariaDB
двигатель от https://downloads.mariadb.org/mariadb/repositories/#mirror=kisiek и моя проблема зависимости исчезла.
После установки не потребовалось никаких дополнительных действий MariaDB
из их официального репозитория.
Я не могу дать более подробный ответ, так как мой пробел зависимости соответствует только libmysqlclient.so.16(libmysqlclient_16)(64bit)
- Я устанавливал разные программы, которые жаловались на это.