我有以下apache和php版本:
apache2 2.4.25-3+deb9u5
apache2-bin 2.4.25-3+deb9u5
apache2-data 2.4.25-3+deb9u5
apache2-utils 2.4.25-3+deb9u5
libapache2-mod-php7.0 7.0.30-0+deb9u1
php 1:7.0+49
php-common 1:49
php-mysql 1:7.0+49
php7.0 7.0.30-0+deb9u1
php7.0-cli 7.0.30-0+deb9u1
php7.0-common 7.0.30-0+deb9u1
php7.0-json 7.0.30-0+deb9u1
php7.0-mysql 7.0.30-0+deb9u1
php7.0-opcache 7.0.30-0+deb9u1
php7.0-readline 7.0.30-0+deb9u1
这是我的PHP代码:
<!DOCTYPE html><html><head><meta charset="utf-8"></head><body>
<?php
$con = mysqli_connect("localhost", "root", "", "hardware");
$sql = "SELECT * FROM fp;";
$res = mysqli_query($con, $sql);
$num = mysqli_num_rows($res);
echo $num;
if ($num > 0)
{
echo "Ergebnis: <br>";
}
else
{
echo "Keine Ergebnisse!<br>";
}
while ($dsatz = mysqli_fetch_assoc($res))
{
echo $dsatz["hersteller"] . ", "
. $dsatz["typ"] . ", "
. $dsatz["gb"] . ", "
. $dsatz["preis"] . ", "
. $dsatz["artnummer"] . ", "
. $dsatz["prod"] . "<br>";
}
mysqli_close($con);
?>
</body></html>
PHP代码可从命令行正常运行,但不能通过浏览器正常运行。 我发现通过浏览器调用php代码时,变量$ num没有值。似乎没有建立数据库连接。
我不知道为什么。
P.S .: php -i | grep mysqli ----->显示已启用mysqli
P.P.S .:
使用<?php phpinfo() ?>
的网页的Mysqli结果
P.P.P.S:通过浏览器调用脚本期间,日志文件(syslog,mysql / error.log,apache2 / error.log)没有条目。
答案 0 :(得分:0)
正确的解决方案如注释中所示:
添加
if (!$con) { die("Connection failed: " . mysqli_connect_error()); }
到脚本。 这导致错误消息: 连接失败:拒绝用户'root'@'localhost'
的访问造成这种情况的原因是MariaDB mysql识别方法“ unix_socket”,该方法不允许通过浏览器脚本调用进行识别。