это мой первый вопрос, поэтому я стараюсь изо всех сил описать вам мою проблему, спасибо. Я разрабатываю сценарий 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?