PHP7RC3: 如何安装缺少的 MySQLPDO

我试图在 Ubuntu 14.04上用 PHP 7 RC3 + Nginx设置 webserver (为了测试目的)。

我使用来自 OndejSurý (https://launchpad.net/~ondrej/+archive/ubuntu/php-7.0)的 ubuntu/trusty64和 PHP7RC 3在 Vagrant 中安装了 Ubuntu。

我找不到安装 MySQL PDO的方法(PHP 看到的是 PDO类,但没有任何与 MySQL 相关的东西,比如 PDO::MYSQL_ATTR_DIRECT_QUERY等等)

似乎没有 lib php7.0-mysql(类似于 Ondej 中的标准 php5-mysqlndphp7.0-fpm等)

phpinfo()中的 PDO部分:

PDO support      enabled
PDO drivers      no value

我怎样才能得到它?

346960 次浏览

我也有同样的问题。我能够看到启用了 PDO,但是没有可用的驱动程序(使用 PHP7-RC4)。我设法通过将 php _ pdo _ mysql 扩展添加到那些已启用的扩展中来解决这个问题。

希望这个能帮上忙!

遇到了同样的问题,通过在 php.ini 中实际启用具有正确文件名的扩展名解决了这个问题。它被列为 php _ pdo _ mysql。因此,/lib/php/module 中的模块名称称为 pdo _ mysql。所以

因此,只要从 php.ini 文件中删除“ php _”前缀,然后重新启动 httpd 服务,就可以了。

请注意,我正在使用 Arch,因此路径名称和服务可能会有所不同,这取决于您的分布。

由于 Eggyal没有提供他的意见作为回答后,他给了正确的意见在一个评论-我张贴在这里: 在我的情况下,我必须安装模块 php-mysql。有关详细信息,请参阅问题下的评论。

首先,检查您的 php.ini 是否启用了扩展名“ php _ pdo _ mysql”和“ php _ mysqli”,并检查“扩展名 _ dir”的路径是否正确。如果需要上述配置之一,则必须重新启动 php-fpm 以应用更改。

在我的案例中(我在公司使用 Windows 操作系统,我更喜欢 OSX 或 Linux) ,我解决了将这些值放入 php.ini 中的问题:

; ...


extension_dir = "ext"


; ...


extension=php_mysqli.dll
extension=php_pdo_mysql.dll


; ...

希望这个能帮上忙。

对于那些使用 apache2运行 Linux 的用户,您需要安装 php-mysql

apt-get install php-mysql

或者如果你正在运行 ubuntu 16.04或更高版本,仅仅运行以下命令就足够了,不需要编辑你的 php.ini 文件

apt-get install php7.2-mysql

如果你运行的是 ubuntu 15.10或以下版本:

编辑您的 Php.ini文件,它位于 /etc/php/[version]/apache2/php.ini并搜索 < strong > pdo _ mysql 你可能会找到这样的东西

;extension=pdo_mysql.so

换成这个

extension=pdo_mysql.so

保存文件并重新启动 apache

service apache2 restart

检查它在你的 Phpinfo ()中是否可用

如果您在 windows 上,并且您的 php 文件夹不在 PATH 中,那么您已经在 php.ini 中设置了绝对目录

例如:

extension_dir = "C:/php7/ext"

无可奉告

extension=php_mysqli.dll
extension=php_pdo_mysql.dll

重新启动 apache2.4应该就可以了。

希望能有所帮助。

  1. 下载 php 7的源代码并解压缩。
  2. 打开你的终端
  3. 游到 ext/mysqli 目录
  4. 使用命令:

    菲比兹

    ./configure

    制造

    Make install (作为 root 用户)

  5. 在 php.ini 文件中启用扩展名 = mysqli.so
  6. 搞定!

这招对我很管用

首先安装 php-mysql

sudo apt-get install php7.0-mysql
//change the version number based on the php version

然后启用模块

sudo phpenmod pdo_mysql

重启阿帕奇

sudo service apache2 restart

我将从答案开始,然后上下文注意这个修复被记录在上面,我只是重新声明它为任何人谷歌。

  1. 下载 php 7的源代码并进行解压缩。
  2. 打开你的终端
  3. 游到 ext/pdo _ mysql 目录
  4. 使用命令:

    菲比兹

    ./configure

    制造

    Make install (作为 root 用户)

  5. 在 php.ini 文件中启用扩展名 = mysqli.so

这是从这里记录的答案(如果它也帮助了你,请升级它) : https://stackoverflow.com/a/39277373/3912517

背景: 我正在尝试将 LimeSurvey 添加到标准的 WordPress Docker 中。唯一阻碍我的是“ 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-itory-y ppa: ondrej/apache2 我得到了这个: 找不到有效的 OpenPGP 数据。

按照其他说明运行: Apt-get 更新 我得到了这个: 错误: 14 http://ppa.launchpad.net/ondrej/apache2/ubuntu宇宙/主 amd64包 未找到404 错误: 15 http://ppa.launchpad.net/ondrej/php/ubuntu宇宙/主 amd64包 未找到404 我想正因为如此,我得到了:

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 问题,试图绕过这个问题,然后... ..。你就明白了,打地鼠。我放弃了,想看看能不能编译出来,结果找到了答案。

你可能想知道为什么我写了这么多? 这样任何人都可以谷歌找到这个解决方案(包括我!)。

['class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost:3306;dbname=testdb',
'username' => 'user',
'password' => 'password',
'charset' => 'utf8',]

很简单: 只需提供端口号和主机名即可 并将默认袜子路径设置为 php.ini中运行服务器的 mysql.sock文件路径。

我通过重新安装 php-mysql 解决了 ubinto 20.4上的问题。

删除 php-mysql:

sudo apt purge php7.2-mysql

然后安装 php-mysql:

sudo apt install php7.2-mysql

它将在 php.ini 中添加新的配置

在 ubuntu 18.04下面的工作为我工作

在你的终端里输入这个

为了 php7.3

sudo apt-get install php7.3-gd php7.3-mysql

为了 php7.0

sudo apt-get install php7.0-gd php7.0-mysql

为了 php5

sudo apt-get install php5-gd php5-mysql

对于那些正在安装 Linux 程序的人来说,请注意,像“ php7.0-common”这样的东西现在只是简单地称为“ php-common”。