【发布时间】: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。