猿问

我的 PHP SQL Server 连接在浏览器中不起作用

这是我的第一个问题,所以我尽力向您描述我的问题,谢谢。我使用 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配置吗?


MYYA
浏览 100回答 1
1回答

一只斗牛犬

我通过重新安装 sqlsrv 驱动程序来修复,按照 Microsoft 的说明从这里开始:https&nbsp;://learn.microsoft.com/en-us/sql/connect/php/installation-tutorial-linux-mac?view=sql-server-ver15即使您已经安装了该组件,也请按照所有步骤操作,这就是我可以使用任何浏览器修复与 SQL 服务器的连接的方法。
随时随地看视频慕课网APP
我要回答