PHP 7 RC3:如何安装缺少的MySQL PDO

时间:2015-09-22 23:49:06

标签: php mysql ubuntu pdo php-7

我正在尝试在PHP 7 RC3上使用Nginx + Ubuntu 14.04设置网络服务器(用于测试目的)。

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

我找不到安装MySQL PDO的方法(PHP看到PDO类但没有与MySQL有关的任何内容,如PDO::MYSQL_ATTR_DIRECT_QUERY等。

看起来没有lib php7.0-mysql(类似于Ondřej的标准php5-mysqlndphp7.0-fpm等)

PDO中的phpinfo()部分:

PDO support      enabled
PDO drivers      no value

我怎样才能得到它?

12 个答案:

答案 0 :(得分:93)

对于使用apache2运行Linux的人,你需要安装php-mysql

apt-get install php-mysql

或者如果您正在运行ubuntu 16.04或更高版本,则只需运行以下命令即可,无需编辑您的php.ini文件

apt-get install php7.0-mysql

如果您正在运行ubuntu 15.10或更低版本:

修改您的 php.ini 文件 搜索 pdo_mysql 你可能会发现这样的东西

;extension=pdo_mysql.so

将其更改为此

extension=pdo_mysql.so

保存文件并重启apache

service apache2 restart

检查 phpinfo()

中是否可以使用它

答案 1 :(得分:21)

首先安装php-mysql

sudo apt-get install php7.0-mysql

然后启用模块

sudo phpenmod pdo_mysql

并重新启动apache

sudo service apache2 restart 

答案 2 :(得分:4)

首先,检查你的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

; ...

我希望这会有所帮助。

答案 3 :(得分:3)

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

答案 4 :(得分:3)

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

例如:

extension_dir = "C:/php7/ext"

并取消注释

extension=php_mysqli.dll
extension=php_pdo_mysql.dll

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

我希望它有所帮助。

答案 5 :(得分:3)

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

    phpize

         

    ./ configure

         

         

    make install(以root身份)

  5. 在php.ini文件中启用extension = mysqli.so
  6. 完成!
  7. 这对我有用

答案 6 :(得分:2)

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

希望这有帮助!

答案 7 :(得分:2)

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

删除php-mysql:

sudo apt purge php7.2-mysql

然后安装php-mysql:

sudo apt install php7.2-mysql

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

答案 8 :(得分:2)

在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

答案 9 :(得分:1)

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

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

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

答案 10 :(得分:1)

我将先从答案开始,然后从上下文开始。注意,此修复程序已记录在上面,我只是在对所有使用Google搜索的人进行重新声明。

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

    phpize

    ./ configure

    制作

    进行安装(以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更新 我得到这个: 错误:14 http://ppa.launchpad.net/ondrej/apache2/ubuntu个cosmic / main amd64软件包   找不到404 错误:15 http://ppa.launchpad.net/ondrej/php/ubuntu个cosmic / main amd64软件包   找不到404 而且-因此,我想-然后我得到:

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。我放弃了,看我是否可以编译它,我找到了开始的答案。

您可能想知道我为什么写那么多文字?这样,任何使用Google搜索的人都可以找到此解决方案(包括我在内!)。

答案 11 :(得分:0)

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

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