68

I am trying to setup webserver with PHP 7 RC3 + Nginx on Ubuntu 14.04 (for test purposes).

I installed Ubuntu in Vagrant using ubuntu/trusty64 and PHP 7 RC 3 from Ondřej Surý (https://launchpad.net/~ondrej/+archive/ubuntu/php-7.0).

I can not find the way to install MySQL PDO (PHP sees PDO class but not anything related to MySQL, like PDO::MYSQL_ATTR_DIRECT_QUERY etc.)

Looks like there is no lib php7.0-mysql (by analogy with standard php5-mysqlnd and php7.0-fpm etc. from Ondřej)

Section PDO in phpinfo():

PDO support      enabled
PDO drivers      no value

How can I get it?

4

12 回答 12

134

对于使用 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并搜索pdo_mysql 您可能会发现类似这样的内容

;extension=pdo_mysql.so

改成这个

extension=pdo_mysql.so

保存文件并重新启动apache

service apache2 restart

检查它是否在您的phpinfo()中可用

于 2016-01-13T17:03:07.070 回答
37

首先安装php-mysql

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

然后启用模块

sudo phpenmod pdo_mysql

并重新启动apache

sudo service apache2 restart 
于 2017-03-21T13:53:09.740 回答
6

在 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
于 2020-07-03T06:37:45.447 回答
5

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

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

; ...

extension_dir = "ext"

; ... 

extension=php_mysqli.dll
extension=php_pdo_mysql.dll

; ...

我希望这有帮助。

于 2015-12-04T20:30:36.740 回答
4

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

例如:

extension_dir = "C:/php7/ext"

并取消注释

extension=php_mysqli.dll
extension=php_pdo_mysql.dll

重新启动apache2.4,它应该可以工作。

我希望它有所帮助。

于 2016-04-15T07:19:19.617 回答
4

由于在评论中给出了正确的建议后, eggyal没有提供他的评论作为答案 - 我将其发布在这里:在我的情况下,我必须安装模块php-mysql。有关详细信息,请参阅问题下的评论。

于 2015-11-30T05:44:22.797 回答
3
  1. 下载php 7的源代码并解压。
  2. 打开你的终端
  3. 游到 ext/mysqli 目录
  4. 使用命令:

    php化

    。/配置

    制作

    进行安装(以 root 身份)

  5. 在 php.ini 文件中启用 extension=mysqli.so
  6. 完毕!

这对我有用

于 2016-09-01T17:13:22.820 回答
2

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

删除 php-mysql:

sudo apt purge php7.2-mysql

然后安装php-mysql:

sudo apt install php7.2-mysql

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

于 2020-06-24T01:18:18.217 回答
2

我几乎有同样的问题。我能够看到 PDO 已启用,但我没有可用的驱动程序(使用 PHP 7-RC4)。我设法通过将 php_pdo_mysql 扩展添加到已启用的扩展来解决问题。

希望这可以帮助!

于 2015-10-06T16:32:24.893 回答
1

我将从答案开始,然后是上下文注意此修复已在上面记录,我只是为任何使用谷歌搜索的人重新说明它。

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

    php化

    。/配置

    制作

    进行安装(以 root 身份)

  5. 在 php.ini 文件中启用 extension=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-repository -y ppa:ondrej/apache2 我得到了这个:没有找到有效的 OpenPGP 数据。

按照其他一些说明来运行它:apt-get update 我得到了这个: Err:14 http://ppa.launchpad.net/ondrej/apache2/ubuntu cosmic/main amd64 Packages 404 Not Found Err:15 http:// ppa.launchpad.net/ondrej/php/ubuntu cosmic/main amd64 Packages 404 Not Found - 我认为正因为如此 - 然后我得到:

The repository 'http://ppa.launchpad.net/ondrej/apache2/ubuntu cosmic Release' does not have a Release file.

到这个阶段,我仍然在 apt-get update 上得到这个:

Package 'php7.0-mysql' has no installation candidate.

我开始尝试添加 php 库,遇到 Unicode 问题,试图解决这个问题......你明白了...... whack-a-mole。我放弃了,看看我是否可以编译它,我找到了我开始的答案。

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

于 2018-09-28T09:05:20.447 回答
1

有同样的问题,通过使用正确的文件名实际启用 php.ini 中的扩展名来解决。它被列为 php_pdo_mysql.so 但 /lib/php/modules 中的模块名称被称为 pdo_mysql.so

所以只需从 php.ini 文件中删除“php_”前缀,然后重新启动 httpd 服务,它就像一个魅力一样工作。

请注意,我使用的是 Arch,因此路径名称和服务可能会根据您的分布而有所不同。

于 2015-11-15T13:05:27.917 回答
0
['class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=localhost:3306;dbname=testdb',
    'username' => 'user',
    'password' => 'password',
    'charset' => 'utf8',]

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

于 2019-06-21T09:52:45.043 回答