这是我的第一个问题,所以我尽力向您描述我的问题,谢谢。我使用 sqlsrv 库开发了一个 PHP 脚本,以使用 SSH 在 Ubuntu (18.04) 服务器中使用私有 IP 连接到 SQL Server,我安装了该库工作所必需的 .so 并修改我的 php.ini 以识别它。我在控制台中运行我的 PHP 代码,它工作得很好,它会抛出错误并正确获取数据。现在我正在尝试集成这个脚本来制作一个可以连接到 SQL Server 并获取登录过程数据的网页,我已经多次开发网页的这一部分但是这是第一个在SQL服务器。
我会告诉你我的代码:
<?php
class Db {
private $servername;
private $username;
private $password;
private $dbname;
private $conn;
function __construct($server, $user, $pass, $db) {
$this->servername = $server;
$this->username = $user;
$this->password = $pass;
$this->dbname = $db;
$this->conn = false;
}
public function connect() {
$connectionInfo = array("Database"=>$this->dbname, "UID"=>$this->username, "PWD"=>$this->password);
echo $this->conn;
$this->conn = sqlsrv_connect($this->servername, $connectionInfo);
echo "sqlsrv_connect realizado\n";
if($this->conn === FALSE) {
echo "Conexión no se pudo establecer\n";
die( print_r( sqlsrv_errors(), true));
}
}
public function loginPass($email) {
echo "Funcion accedidad\n";
$this->connect();
echo "Conexión realizada\n";
$sql = "SELECT pass FROM Users WHERE email = '{$email}'";
$query = sqlsrv_query($this->conn, $sql);
echo "Query realizado\n";
if($query === FALSE)
die( print_r( sqlsrv_errors(), true));
if( sqlsrv_fetch( $query ) === false)
die( print_r( sqlsrv_errors(), true));
echo "Logica realizada\n";
return sqlsrv_get_field($query, 0);
}
}
?>
而这一个更简化了 SQL 连接的实现:
<?php
$serverName = "localhost"; //serverName\instanceName
$connectionInfo = array( "Database"=>"name", "UID"=>"user", "PWD"=>"pass");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
任何一个代码都可以由控制台执行,但不能用于 bowser 执行。在第一个代码中,我调用了 LoginPass 函数,但它在调用 connect() 时停止工作,更具体地说是在这一行中:
$this->conn = sqlsrv_connect($this->servername, $connectionInfo);
它不会给我一个错误,它只是停止执行并在该行之后做任何事情。我尝试使用chmod更改文件的权限,并使用chown将用户更改为www-data ,但我得到了相同的结果。我也在我的个人电脑(Ubuntu 18.04)上运行它,但也不起作用(Firefox 浏览器)。
¿这个问题是因为SQL配置吗?
一只斗牛犬