我在GoDaddy托管帐户上使用PEAR连接到数据库时遇到了一些麻烦。 我能够使用标准的mysql_connect连接到我的数据库。
我从以下位置下载了数据库包: 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网络界面只是将我发送到未找到的页面。
我错过了包裹吗?请指教!感谢。
答案 0 :(得分:1)
PEAR :: DB已被MDB2取代,自2007年以来一直没有更新。有关您遇到的错误消息的bug report已归档,但从未解决。
您可能希望尝试使用PDO。
答案 1 :(得分:1)
DB已经过时了,在标准的现代PHP安装上以严格模式运行时会发出很多警告。就此而言,它的继任者MDB2也是如此。警告不是致命的,他们只是指出:: connect()“方法”设置不正确。
它仍然可以工作,只需忽略警告。但是考虑升级到像PDO这样更现代的东西。
答案 2 :(得分:1)
禁用error_reporting = E_ALL |你的php ini文件中的E_STRICT
答案 3 :(得分:0)
我也有这个问题。会发生什么是PEAR DB适合使用PHP 4.X类语法,而GoDaddy显然安装了PHP 5.X - 这意味着您会收到这些错误。虽然它们没有被标记为“致命”,但它们却表现为致命的错误 - 这些方法根本就没有被调用。
如果您有权访问PEAR源,则除了通过日志中显示的每个函数之外,您没有其他选择,并且在函数声明之前添加“static”关键字。这是一种痛苦,但这是唯一的选择。我今天刚刚成功完成了这项工作 - 我有一个非常古老的应用程序要维护,仍然需要PEAR DB才能运行,最新的PHP自动升级(目前是PHP 5.3.X)破坏了数据库连接。移植整个应用程序以使用MDB2(建议的选择)不是一个选项,因此添加十几个或两个“静态”关键字对我来说是个窍门。
但是,如果您从头开始创建项目,并且没有遗留代码可以维护,我绝对建议您放弃DB并转而使用MDB2。