我是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!
答案 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抛出的错误消息静音。
答案 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
然后一切都应该按预期工作。