如何配置 php 以在 CentOS 上启用 pdo 并包含 mysqli?

Posted

技术标签:

【中文标题】如何配置 php 以在 CentOS 上启用 pdo 并包含 mysqli?【英文标题】:How do I configure php to enable pdo and include mysqli on CentOS? 【发布时间】:2013-09-15 19:53:21 【问题描述】:

CentOS 上的 php 版本 5.3.3(x86_64,RHEL 6)

显然我的 PHP 安装被配置为排除 mysqli 并出于某种原因禁用 PDO。因此,我相信当我尝试从 shell 使用 php 命令时,这就是导致它们无法工作的原因。我可以很好地通过 HTTP 加载 mysqli 和 pdo,但它们不能从 shell 工作。如何启用这些组件?这样做有什么风险?

配置命令:

'./configure' '--build=x86_64-redhat-linux-gnu' '--host=x86_64-redhat-linux-gnu' '--target=x86_64-redhat-linux-gnu' '--program-prefix=' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib64' '--libexecdir=/usr/libexec' '--localstatedir=/var' '--sharedstatedir=/var/lib' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--cache-file=../config.cache' '--with-libdir=lib64' '--with-config-file-path=/etc' '--with-config-file-scan-dir=/etc/php.d' '--disable-debug' '--with-pic' '--disable-rpath' '--without-pear' '--with-bz2' '--with-exec-dir=/usr/bin' '--with-freetype-dir=/usr' '--with-png-dir=/usr' '--with-xpm-dir=/usr' '--enable-gd-native-ttf' '--without-gdbm' '--with-gettext' '--with-gmp' '--with-iconv' '--with-jpeg-dir=/usr' '--with-openssl' '--with-pcre-regex=/usr' '--with-zlib' '--with-layout=GNU' '--enable-exif' '--enable-ftp' '--enable-magic-quotes' '--enable-sockets' '--enable-sysvsem' '--enable-sysvshm' '--enable-sysvmsg' '--with-kerberos' '--enable-ucd-snmp-hack' '--enable-shmop' '--enable-calendar' '--without-sqlite' '--with-libxml-dir=/usr' '--enable-xml' '--with-system-tzdata' '--with-apxs2=/usr/sbin/apxs' '--without-mysql' '--without-gd' '--disable-dom' '--disable-dba' '--without-unixODBC' '--disable-pdo' '--disable-xmlreader' '--disable-xmlwriter' '--without-sqlite3' '--disable-phar' '--disable-fileinfo' '--disable-json' '--without-pspell' '--disable-wddx' '--without-curl' '--disable-posix' '--disable-sysvmsg' '--disable-sysvshm' '--disable-sysvsem' 

解析的其他 .ini 文件:

/etc/php.d/apc.ini, /etc/php.d/bcmath.ini, /etc/php.d/curl.ini, /etc/php.d/dba.ini, /etc/php.d/dom.ini, /etc/php.d/fileinfo.ini, /etc/php.d/gd.ini, /etc/php.d/imap.ini, /etc/php.d/json.ini, /etc/php.d/ldap.ini, /etc/php.d/mbstring.ini, /etc/php.d/mcrypt.ini, /etc/php.d/mysql.ini, /etc/php.d/mysqli.ini, /etc/php.d/odbc.ini, /etc/php.d/pdo.ini, /etc/php.d/pdo_mysql.ini, /etc/php.d/pdo_odbc.ini, /etc/php.d/pdo_sqlite.ini, /etc/php.d/phar.ini, /etc/php.d/snmp.ini, /etc/php.d/soap.ini, /etc/php.d/sqlite3.ini, /etc/php.d/wddx.ini, /etc/php.d/xmlreader.ini, /etc/php.d/xmlrpc.ini, /etc/php.d/xmlwriter.ini, /etc/php.d/xsl.ini, /etc/php.d/zip.ini 

/etc/php.ini

extension=pdo.so
extension=pdo_mysql.so
extension=pdo_sqlite.so
extension=mysql.so

【问题讨论】:

当您尝试使用它们时出现什么错误信息? 致命错误:在 /var/www/html/lib/Varien/Db/Adapter/Pdo/Mysql.php:302 中未捕获异常 'Zend_Db_Adapter_Exception' 并带有消息 'pdo_mysql 扩展未安装' 跨度> 你能显示你的 phpinfo() 吗? 不,但我可以为您提供任何特定的部分。 请提供您可以展示的所有部分(尤其是包含 PDO 和 mySQL 的所有部分)。如果 phpinfo() 中缺少某些内容,如果您不共享整个内容,则很难发现。 【参考方案1】:

您可能只需要安装软件包。

yum install php-pdo php-mysqli

安装完成后,重新启动 Apache。

httpd restart

apachectl restart

【讨论】:

运行安装返回Package php-pdo-5.3.3-22.el6.x86_64 already installed and latest version Package php-mysql-5.3.3-22.el6.x86_64 already installed and latest version Nothing to do【参考方案2】:

mysqli 由 php-mysql-5.3.3-40.el6_6.x86_64 提供

您可能需要尝试以下方法

yum install php-mysql-5.3.3-40.el6_6.x86_64

【讨论】:

【参考方案3】:

解压后手动编译PHP,进入php目录运行 ./configure --with-pdo-mysqli=/usr

【讨论】:

以上是关于如何配置 php 以在 CentOS 上启用 pdo 并包含 mysqli?的主要内容,如果未能解决你的问题,请参考以下文章

保持套接字服务器在 CentOS 上运行以在 php 中侦听客户端请求

在哪里/如何编辑 nginx.conf 以在 Elastic Beanstalk 上启用带有附加标头的 SSL

php 5.3.1 的 phpinfo() 中未启用 mysql

CentOS:在 PHP 安装中启用 GD 支持

CentOS:在PHP安装中启用GD支持

如何重新启动 httpd 以在 Elastic Beanstalk 中的 EC2 实例上启用 HTTPS?