PHP5:调用外部函数和记录错误

时间:2008-11-10 16:29:48

标签: php mysql pear

我是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

JOY!

5 个答案:

答案 0 :(得分:6)

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

否则:

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

检查名为display_errors的行,如果您希望在浏览器中输出错误,则将其设置为true(不建议用于生产系统,但在调试和开发期间非常有用)。

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

/var/log/apache2/error.log

答案 1 :(得分:1)

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

Documentation

答案 2 :(得分: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

答案 3 :(得分:0)

当我找到一个无法找到的功能时,我有时会让PHP陷入“黑洞”。

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

您可以通过创建这样的php页面来实现:

<?php
phpinfo();
?>

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

答案 4 :(得分:0)

我认为您没有为PHP安装mysql扩展。从PHP5开始,我认为它是PECL扩展。 如果您正在使用Windows,那么在您的php目录中应该有一个pecl.bat或类似的东西。只需通过控制台进入,然后输入

pecl download mysql

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