Мой PHP SQL Сервер не работает в браузере - PullRequest
1 голос
/ 14 апреля 2020

это мой первый вопрос, поэтому я стараюсь изо всех сил описать вам мою проблему, спасибо. Я разрабатываю сценарий PHP с использованием библиотеки sqlsrv для подключения к серверу SQL с использованием частного IP-адреса на сервере Ubuntu (18.04) с использованием S SH, я установил .so, необходимый для работы библиотеки, и изменил мой php .ini, чтобы распознать это. Я запускаю свой код PHP в консоли, и он отлично работает, выдает ошибки, когда они есть, и правильно выбирает данные. Сейчас я пытаюсь интегрировать этот сценарий, чтобы создать веб-страницу, которая могла бы подключиться к серверу SQL и получить данные для процесса входа в систему. Я разрабатывал эту часть веб-страницы много раз, но эта первая на SQL сервере. Веб-страница работает до тех пор, пока не вызовет файл PHP, который управляет связью с SQL Сервером, но останавливается в указанной строке c, когда вызывает функцию для подключения к серверу (sqlsrv_connect ()), я отлаживал скрипт, находя все проблемы консолью и решая их, но он всегда останавливался на одной и той же строке кода, когда я выполняю PHP в браузере (Firefox).

Я покажу вам мой код:

<?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);

if( $conn ) {
     $sql = 'SELECT data FROM Table WHERE ID = 2';
     $query = sqlsrv_query($conn, $sql);
     sqlsrv_fetch($query);
     $data = sqlsrv_get_field($query, 0);
     echo $data."\n";
}else{
     echo "Conexión no se pudo establecer\n";
     die( print_r( sqlsrv_errors(), true));
}
?>

Любой из кодов Работы выполняются консолью, но не для казенного исполнения. В первом коде я вызываю функцию LoginPass, но она перестает работать, когда она вызывает connect (), более конкретно в этой строке:

$this->conn = sqlsrv_connect($this->servername, $connectionInfo);

Это не выдает ошибку, просто останавливает выполнение и делает что-нибудь после этой строки. Я попытался изменить права доступа к файлу с помощью chmod и изменить пользователя на www-data с помощью chown , но я получил тот же результат. Кроме того, я запускаю его на своем персональном компьютере (Ubuntu 18.04) и тоже не работаю (Firefox браузер).

¿Это проблема из-за конфигурации SQL?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...