【问题标题】:PHP PDO Failure to open streamPHP PDO 无法打开流
【发布时间】:2012-08-04 19:37:52
【问题描述】:

我确信这是我忽略的简单事情,但这让我有点发疯。我在运行 LAMP 的 Ubuntu 机器上。我在这台机器上运行了几个站点,使用 Php/MySql 毫不费力。我最近开始使用 Yii 框架建立一个站点,但我不认为这是一个 Yii 问题。也许是的。总之……

我的其他站点使用 mysqli,所以 Yii 的 PDO 要求对我来说是新的。我在 PDO 上做了一个快速的 -i|grep,它在安装/启用时返回,所以不用担心。我安装了框架,创建了一个快速测试站点和数据库。但是,当我尝试通过该站点连接到数据库时,我收到一条错误消息,告诉我 PDO 失败。具体来说,打开流失败。因此,即使安装了 PDO,它也没有找到 PDO。 Yii 站点与其他站点位于同一 web 文件夹中,因此不会存在路径问题。

从 Yii 的角度来看,如果这就是问题所在……我能够为 Gii 中的各种数据库表创建控制器,但是当我尝试为这些表生成 CRUD 时出现同样的无法打开流错误.

记录一下,是的,MySql 是在 Yii main.php 文件中启用的。是的,连接字符串是正确的。如果 PDO 列为已启用,为什么它无法打开,我有点不知所措。

【问题讨论】:

  • 你打开连接的代码是什么? (显然混淆了敏感信息)
  • 您是否使用 phpInfo 检查过以确保服务器实际上正在使用 PDO?特别是mysql版本?
  • 有效问题。事实证明我不知道。在这一点上有点令人困惑。 PDO 在 CLI 中显示为已启用,这就是为什么当我执行 php -i|grep PDO 时它显示为已启用的原因。但是,它没有显示在 php(info) 上。当然,CLI 和 Web 服务器运行到不同的 .ini 文件。但是...当我比较两个 .ini 文件时,它们完全相同,涉及 PDO 的字符。这对我来说毫无意义。
  • 框架中包含一个小应用程序,用于检查以确保满足所有要求(我认为它被称为要求)。这说明了什么?
  • localhost/yii/requirements PDO MySQL 扩展通过了吗?

标签: php pdo yii


【解决方案1】:

仅针对搜索引擎发布此内容。我仍然不知道到底是什么问题。正如我所提到的,PDO 显示从 CLI 启用,但不是从 phpinfo。这是可能的,因为 CLI 使用的 php.ini 与 apache2 不同。但是,在完全重新安装 php 后,我仍然遇到了同样的问题。我再次在 gedit 中打开了两个 .ini 文件,并在“pdo”上使用不区分大小写的查找逐行查找。它们绝对、完全相同。最后,我放弃了试图理解这个问题,而只是简单地解决了这个问题。我从 Apache2 中删除了 .ini 并用 cli 中的那个替换它,瞧!我在 Apache2 中启用了 PDO。我仍然完全不知道问题是什么,但至少它已经解决了。

【讨论】:

    猜你喜欢
    • 2019-12-03
    • 2012-05-14
    • 2020-07-27
    • 1970-01-01
    • 2015-06-22
    • 2018-01-13
    • 2018-11-21
    • 1970-01-01
    相关资源
    最近更新 更多