【问题标题】:mysqli_connect is killing php script when run from a web browser从 Web 浏览器运行时,mysqli_connect 正在杀死 php 脚本
【发布时间】:2014-11-17 12:06:15
【问题描述】:

我有一个 php 脚本进行一些计算,然后连接到 mysql 数据库以写入一些数据。当我从终端运行脚本时,脚本运行良好。当我从网页运行脚本时(当我单击页面中的按钮时开始),脚本一旦命中 php 代码中的 mysql_connect 语句就会终止。

不确定可以为您提供哪些代码或数据来帮助调试...只是死掉而没有错误消息。如果有人对要发布哪些额外数据有任何建议,请告诉我。

可能是某种权限问题吗?出于某种原因,在终端我的帐户可以访问包含 mysqli_connect 功能的 mysqli 库,但是 apache 网络用户没有这些权限?我被卡住了……以前从未见过。

test.php:

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
connectToDB();
print "hi manny";

function connectToDB() {
$hostname = "XXXXX";
$port = "XXX";
$schema = "XXXX";
$username = "XXXXX";
$password = "XXXXX";

print "got inside\n";
$dbh = mysqli_connect($hostname, $username, $password, $schema, $port);
print "got connect\n";
// Check connection
if (!$dbh) {
    echo "connection failed\n";
    die("Connection failed: " . mysqli_connect_error());
 }
 echo "Connected successfully\n";
 return $dbh;
}
?>

从命令行运行时:

[manoli@app01 site1]$ php -f test.php
进去了
得到连接
连接成功
嗨,曼尼

当通过 ajax 从网页运行时:
进入


致命错误:在 >/var/www/apps/site1/test.php 中调用未定义函数 mysqli_connect()第 16 行

【问题讨论】:

  • 我的猜测是您关闭了 PHP 错误报告,这就是没有错误消息的原因。
  • 根据@Nordenheim 所说的,使用ini_set('display_errors', 1); error_reporting(E_ALL); 开启错误报告并向我们展示弹出的内容。
  • 如果没有错误,你怎么知道mysql_connect是问题所在?
  • 我开启了 error_reporting。我添加了 ini_set,现在我看到以下内容:致命错误:在 /var/www/apps/site1/handleRegistration.php 中调用未定义函数 mysqli_connect() b>80

    为什么网页运行时找不到mysqli_connect函数,命令行却可以? @达伦
  • @user3255120 您的 PHP 很有可能在没有 MySQLi 支持的情况下编译。尝试运行phpinfo(); 看看是否有mysqli。

标签: php mysqli


【解决方案1】:

看起来您没有启用 MySQLi。您应该检查您的 phpinfo() 以获得 MySQLi 支持。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-23
    • 2019-03-21
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 1970-01-01
    • 2012-02-12
    • 1970-01-01
    相关资源
    最近更新 更多