2

我对 PHP 很陌生,并试图在我的本地站点上设置 phpBB。我有 apache2 和 php5 的股票 debian 安装。phpBB 安装程序运行良好,连接到数据库并毫无问题地创建了所有表。但是当我试图打开登录页面时,我得到了一个 0 字节的响应。

一点点挖掘表明它从来没有通过对 mysql_pconnect() 的调用。php 二进制文件只是退出而没有错误或消息。什么都没有。我尝试运行以下代码:

<?php
$id = @mysql_pconnect('localhost','myusername', 'mypassword', true);
print "id=".$id."\n";
?>

并且 "id=" 字符串从不打印。它什么也不做。我不知道去哪里查看发生了什么错误,或者根本不知道发生了什么。我安装的只是使用梨的“mysql”......也许我还缺少其他东西?

这一定是某个地方的路径问题。mysql 扩展很好地构建在

/usr/lib/php5/20060613+lfs/mysql.so

回答:

jishi:通知我“@”运算符禁止输出,包括错误消息(@echo off,有人吗?)

tomhaigh:扩展必须在 php.ini 文件中显式启用。将“extension=mysql.so”行添加到 php.ini 后,以下代码运行良好:

% cat d.php 
<?php
ini_set('display_errors', true);
error_reporting(E_ALL | E_NOTICE);
$id = mysql_pconnect('localhost','myusername', 'mypassword', true);
print "id=".$id."\n";
?>
% php -c /etc/php5/apache2/php.ini  d.php
id=Resource id #4

喜悦!

4

5 回答 5

6

刚刚注意到您在 mysql_pconnect() 前面使用了一个 @。这会抑制所有错误,在这种情况下这是一个非常糟糕的主意。删除它,您可能会看到输出。

除此以外:

检查你的 php.ini,对于 debian,应该在 /etc/php5/apache2/php.ini 中。

检查名为 display_errors 的行,如果您想在浏览器中输出错误,请将其设置为 true(不推荐用于生产系统,但在调试和开发期间很有用)。

为 apache 指定 log_errors 以将您的错误记录到 apache 的错误日志文件中,在 debian 中默认为(除非为 phpBB 站点指定了其他错误文件):

/var/log/apache2/error.log

于 2008-11-10T16:48:24.710 回答
1

删除“@”,即静音 mysql_pconnect 抛出的错误消息。

文档

于 2008-11-10T16:50:15.113 回答
1

尝试这样做:

<?php
ini_set('display_errors', true);
error_reporting(E_ALL | E_NOTICE);
$id = mysql_pconnect('localhost','myusername', 'mypassword', true);
print "id=".$id."\n";
?>

看看反应是什么

编辑

从您的评论看来,mysql 模块没有安装或启用。你可以看看你的 php.ini 文件,看看是否有类似的行

extension=mysql.so

如果用分号注释,请尝试将其删除并重新启动 apache

于 2008-11-10T17:27:25.083 回答
0

当 PHP 找到一个它找不到的函数时,我有时会让它陷入“黑洞”。

你能验证mysql扩展是否安装正确吗?

您可以通过创建这样的 php 页面来做到这一点:

<?php
phpinfo();
?>

将其保存在您的 webroot 中,然后访问它。它应该包含有关您的服务器当前运行的 PHP 模块的所有信息。

于 2008-11-10T16:38:47.507 回答
0

我认为你没有为你的 PHP 安装 mysql 扩展。自 PHP5 以来,我认为它是一个 PECL 扩展。如果你在 Windows 上工作,你的 php 目录中应该有一个 pecl.bat 或类似的东西。只需通过控制台去那里并输入

pecl download mysql

然后一切都应该按预期工作。

于 2008-11-10T16:57:50.760 回答