Ошибка.Не удается подключиться к базе данных: SQLSTATE [HYT00] - PullRequest
0 голосов
/ 26 мая 2018

Я получаю следующую ошибку при попытке подключиться к моей базе данных Microsoft SQL Server с использованием номера порта по умолчанию:

Error. Cannot connect to database: SQLSTATE[HYT00]: [unixODBC][Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired

Это код PHP, который я использую для подключения к базе данных:

<?php

class DB_Connect {
    private $db;

    function construct() {
    }

    public function connect() {
        require_once 'String.php';

        try {
            $this->db = new PDO('sqlsrv:Server=$server,1433; Database=$db', $user, $pass);
        } catch (PDOException $e) {
            return "Error. Cannot connect to database: " . $e->getMessage();
        }
    }
}

?>

Я на 100% уверен, что учетные данные верны, так как они рабочие, когда я запускаю скрипт на локальном хосте с использованием xampp.

Что я делал до сих пор:

  • Установил драйверы pdo на машине linux
  • Установил драйверы obdc на машине linux
  • Установил драйверы sqlsrv на машине linux

enter image description here

Это конфигурация, которую я использую на сервере:

PHP версии 7.0.30 для подключения к SQL Server 2017, размещенному на Gearhost.

Кто-нибудь может пролить свет на то, что может быть не так?

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

В основном проблемы были 2:

  1. Прежде всего, драйверы были установлены неправильно.Мне нужно было установить драйверы через PECL.Вот как я их установил в Redhat Cent OS 7:

Установка PHP:

sudo su
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm
rpm -Uvh remi-release-7.rpm epel-release-latest-7.noarch.rpm
subscription-manager repos --enable=rhel-7-server-optional-rpms
yum-config-manager --enable remi-php72
yum update
yum install php php-pdo php-xml php-pear php-devel re2c gcc-c++ gcc

Предварительные требования для установки

sudo yum-config-manager --enable rhel-server-rhscl-7-rpms
sudo yum install devtoolset-7
scl enable devtoolset-7 bash

Установка драйверов PHP для SQL Server

pecl download sqlsrv
tar xvzf sqlsrv-5.2.0.tgz
cd sqlsrv-5.2.0/
phpize
./configure --with-php-config=/usr/bin/php-config
make
sudo make install

Установите Apache и перезапустите службу

sudo yum install httpd
sudo apachectl restart

- РЕДАКТИРОВАТЬ -

Вы также можете загрузить готовые двоичные файлы изСтраница проекта Github или установка из репозитория Remi:

sudo yum install php-sqlsrv php-pdo_sqlsrv
В моем случае мне также пришлось открыть соединение брандмауэра с сервера базы данных.Вы проверите, нужно ли это, запустите sqlcmd из терминала, чтобы подключиться к базе данных.Если вы получаете сетевую ошибку с правильными учетными данными, то вы знаете, что у вас проблема с брандмауэром.

Надеюсь, это поможет любому, кто испытывает трудности при подключении к серверу Linux к SQL Server.

0 голосов
/ 26 мая 2018

Вы можете использовать это здесь?

try{
    $db = new PDO("sqlsrv:Server,1433=$server;dbname=$db;charset=utf8","$user","$pass");
    $query=$db->prepare("Some SQL String Here");
    $query->execute();
}catch(PDOException  $e ){
    echo "Error: ".$e;
}
...