我有一个来自名为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的交叉post,但也许它实际上更适合在这里比StackOverflow
约翰的build议后,我尝试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则依赖性错误会减less:
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
所以我所有我需要find一些源代码php-mysqlnd 5.5显然是不可用的remi remi-test 。 任何想法,我可以find这个? 我只想要这个特定的软件包,所以也许我应该下载它并从源代码构build?
那么,我终于设法通过添加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
您从remi-test存储库安装了PHP 5.5,但您似乎没有再启用此回购。 这就是为什么要安装错误的旧版本的php-mysql 。 尝试启用remi-test回购。
yum --enablerepo=remi-test install php-mysql
看起来像remi仓库中的一些软件包正在玩你的需求。 对于这个命令,尝试禁用该回购: yum install php-mysql --disablerepo=remi 。 这应该会得到你需要的软件包,不过你将来可能会遇到与remi版本库有关的其他问题。
我刚刚在CentOS Linux上为Yii2项目发现了与我的chroot Apache安装相同的问题。 似乎只是因为pdo_mysql.so PHP模块希望在/ usr / lib64中打开libmysqlclient.so.18,但是已经将它包含在/ usr / lib64 / mysql中。 这样做很简单:
# ln -s /usr/lib64/mysql/libmysqlclient.so.18.0.0 /usr/lib64/libmysqlclient.so.18
我的环境与您的环境有一点不同,因为我在CentOS 7上遇到了这个问题,但是对于Requires: libmysqlclient.so.16(libmysqlclient_16)(64bit)问题,它的确有窍门。
我已经从https://downloads.mariadb.org/mariadb/repositories/#mirror=kisiek安装MariaDB引擎,我的依赖问题已经消失。
从官方仓库安装MariaDB之后,并不需要额外的工作。
我不能提供更详细的答案,因为我的依赖probelem只匹配libmysqlclient.so.16(libmysqlclient_16)(64bit) – 我正在安装不同的软件,抱怨它。