我是 PHP 的新手,正试图在我的本地站点上设置 phpBB。我有 apache2 和 php5 的股票 debian 安装。 phpBB 安装程序运行良好,连接到数据库并毫无问题地创建了所有表。但是当我尝试打开登录页面时,我得到了一个 0 字节的响应。
一点点挖掘表明它从未通过对 mysql_pconnect() 的调用。 php 二进制文件直接退出,没有错误或消息。什么都没有。我尝试运行以下代码:
<?php
$id = @mysql_pconnect('localhost','myusername', 'mypassword', true);
print "id=".$id."\n";
?>
并且“id=”字符串从不打印。它什么都不做。我不知道去哪里查看发生了什么错误,或者根本不知道发生了什么。我安装的只是使用 pear 的“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
快乐!
最佳答案
刚刚注意到您在 mysql_pconnect() 前面使用了 @。这会抑制所有错误,在这种情况下这是一个非常糟糕的主意。删除它,您可能会看到输出。
否则:
检查你的 php.ini,对于 debian 应该在/etc/php5/apache2/php.ini 中。
检查名为 display_errors 的行,如果您希望在浏览器中输出错误,请将其设置为 true(不推荐用于生产系统,但在调试和开发期间很有用)。
为 apache 指定 log_errors on 以将您的错误记录到 apaches 错误日志文件,默认情况下在 debian 中将是(除非为 phpBB 站点指定了其他错误文件):
/var/log/apache2/error.log
关于PHP5 : calling external functions, 和记录错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/278351/