web-dev-qa-db-ja.com

MariaDBがすでにインストールされているPHP MySQLドライバーをインストールしようとしています

CentOS 6.4 x64、Nginx、php-fpm、MariaDBというイメージからのVPSがあります。 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よりも実際にここに適しています

アップデート1

ジョンの提案の後、私は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

アップデート2

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では利用できません。私がこれを見つけることができるアイデアはありますか?この特定のパッケージだけが必要なので、ダウンロードしてソースからビルドする必要がありますか?

1

さて、私はついに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を使用してインストールを続行しました。

3

remi-testリポジトリからPHP 5.5をインストールしましたが、このリポジトリが有効になっていないようです。これが、間違った古いバージョンのphp-mysqlが使用されている理由です。インストールが提案されました。remi-testリポジトリを有効にしてみてください。

yum --enablerepo=remi-test install php-mysql
1
Michael Hampton

_CentOS 7_で問題に直面したため、私の環境はあなたの環境とは少し異なりますが、Requires: libmysqlclient.so.16(libmysqlclient_16)(64bit)の問題ではうまくいきました。

https://downloads.mariadb.org/mariadb/repositories/#mirror=kisiek からMariaDBエンジンをインストールしましたが、依存関係の問題はなくなりました。

公式リポジトリからMariaDBをインストールした後は、追加の作業は必要ありませんでした。

依存関係のプローブレムが一致するのはlibmysqlclient.so.16(libmysqlclient_16)(64bit)のみであるため、これ以上詳細な回答を提供することはできません。別のソフトウェアをインストールしていて、それについて不平を言っていました。

0
tymik

Yii2プロジェクト用のCentOSLinuxへのchrootApacheインストールで同じ問題が見つかりました。 pdo_mysql.so PHPモジュールが/ usr/lib64でlibmysqlclient.so.18を開くことを期待しているからと思われますが、実際には、mariadbはすでに/ usr/lib64/mysqlに含まれています。簡単です。そのように修正するには:

# ln -s /usr/lib64/mysql/libmysqlclient.so.18.0.0 /usr/lib64/libmysqlclient.so.18
0
Alex

remiリポジトリの一部のパッケージが、要件を満たしているようです。このコマンドでは、そのリポジトリを無効にしてみてください:yum install php-mysql --disablerepo=remi。これで必要なパッケージが得られるはずですが、将来、remiリポジトリで他の問題が発生する可能性があります。

0
John