【问题标题】:Cannot connect to database with PEAR php无法使用 PEAR php 连接到数据库
【发布时间】:2013-09-28 00:09:24
【问题描述】:

在我的 GoDaddy 主机帐户上使用 PEAR 连接到数据库时遇到了一点问题。 我可以使用标准的 mysql_connect 连接到我的数据库。

我已从以下位置下载 DB 包: http://pear.php.net/package/DB

首先我已经包含了包(有效):

include 'libs/pear/db/DB.php';

然后我连接:

$dsn = array(
    'phptype'  => "mysql",
    'hostspec' => $hostname,
    'database' =>  $dbname,
    'username' => $username,
    'password' => $password
);

$conn = DB::connect($dsn);

if (DB::isError ($conn))
     die ("Cannot connect: " . $conn->getMessage () . "\n");

但是,它不起作用。事实上,如果我在 $conn = DB::connect($dsn); 之间放一个骰子如果 (DB::isError ($conn)),它不会显示。就像脚本在 DB::connect 上结束一样。

我尝试使用以下方法打开错误:

ini_set('display_errors',1);
error_reporting(E_ALL|E_STRICT);

我得到:

Strict Standards: Non-static method DB::connect() should not be called statically in /path/t.php on line 27

Strict Standards: Non-static method DB::parseDSN() should not be called statically in /path/DB.php on line 520

哪些不是致命错误,所以它不应该导致脚本死掉??

我无法访问错误日志,因为 GoDaddys 网络界面只是将我发送到未找到的页面。

我缺少包裹吗?请指教!谢谢。

【问题讨论】:

    标签: php mysql pear


    【解决方案1】:

    PEAR::DB 已被 MDB2 取代,并且自 2007 年以来没有更新。关于您遇到的错误消息的 bug report 已提交,但从未解决。

    您可能想尝试改用PDO

    【讨论】:

      【解决方案2】:

      DB 已过时,并且在标准现代 PHP 安装上以严格模式运行时会引发很多警告。就此而言,它的继任者 MDB2 也将如此。警告不是致命的,它们只是指出 ::connect() “方法”设置不正确。

      它仍然有效,只是忽略警告。但请考虑升级到更现代的东西,例如 PDO。

      【讨论】:

        【解决方案3】:

        禁用错误报告 = E_ALL | E_STRICT 在你的 php ini 文件中

        【讨论】:

          【解决方案4】:

          我也遇到过这个问题。发生的情况是 PEAR DB 是为使用 PHP 4.X 类语法而定制的,而 GoDaddy 显然安装了 PHP 5.X——这意味着您会遇到这些错误。虽然它们没有被标记为“致命”,但它们在某种程度上表现为致命错误——这些方法根本没有被调用。

          如果您可以访问 PEAR 源代码,那么您别无选择,只能逐个检查出现在日志中的每个函数,并在函数声明之前添加“static”关键字。这很痛苦,但这是唯一的选择。我今天刚刚成功地做到了——我有一个非常旧的应用程序要维护,它仍然需要 PEAR DB 才能运行,并且 PHP 的最新自动升级(当前是 PHP 5.3.X)破坏了数据库连接。移植整个应用程序以使用 MDB2(推荐的选择)不是一个选项,因此添加一打或两个“静态”关键字对我来说是诀窍。

          但是,如果您是从头开始一个项目,并且没有要维护的遗留代码,我绝对建议您放弃 DB 并转而使用 MDB2。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-06-22
            • 2018-07-12
            • 1970-01-01
            • 2015-12-29
            • 1970-01-01
            相关资源
            最近更新 更多