我在新的Ubuntu服务器上从php7得到以下错误:
注意:试图获取~/tLogServ.php中14
行的非对象属性
警告:mysqli::query():无法在~/tLogServ.php中的17行获取mysqli
致命错误:未捕获错误:调用~/tLogServ.php中null的成员函数fetch_assoc():18堆栈跟踪:0{main}thrown在~/tLogServ.php的18
行
这是tLogServ.php
<?php
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
$request = json_decode( file_get_contents('php://input') );
$variable = $request->data;
// echo($variable);
$result = $conn->query("SELECT password FROM login where userID LIKE 'technician'");
$rows = $result->fetch_assoc();
$passHashed = $rows['password'];
if(password_verify($variable, $passHashed)){
$loginMess = "success";
}else{
$loginMess = "fail";
}
echo json_encode($loginMess);
$conn->close();
?>
和我的连接脚本
<?php
DEFINE ('user', '$%^*(');
DEFINE ('pass', '^*&%*');
DEFINE ('host', '1*&^*&^');
DEFINE ('DB', '^*%*(&%^');
$conn = new mysqli(host, user, pass, DB) OR die('Fail Whale ' . mysqli_connect_error());
?>
通知会随着输入而消失,但我不确定它所引起的警告和致命错误。
这段代码在带有PHP5的Ubuntu14上运行时没有问题。我已取消注释扩展名=php_mysqli.dll这显然是一个兼容性问题,但我不确定是否需要重新编写代码,或者这是一个找不到的简单设置问题。
问题是两个愚蠢的错误。
1) 我在连接中引用的用户没有获得适当的权限。
和
2) "Host"被定义为本地主机的IP。无论出于何种原因,这在Cat连接上有效,但在WiFI上无效(两者都有静态Ip)。
对于有相同/类似问题的其他人。验证您的php.ini mysqli扩展是否已启用/取消注释。正如A.L所说,问题在于mySQL设置,而不是PHP/Ubuntu。