none
Подключение PHP 5.6 к MS SQL 2008 R2 через ODBC (SQL Server Native Client 11.0) на Centos 6.8 RRS feed

  • Вопрос

  • Здравствуйте. На Centos установлен PHP 5.6, Microsoft SQL Server ODBC Driver 1.0 for Linux.

    odbcinst.ini

    [SQL Server Native Client 11.0]
    Description=Microsoft SQL Server ODBC Driver V1.0 for Linux
    Driver=/opt/microsoft/sqlncli/lib64/libsqlncli-11.0.so.1790.0
    Threading=1
    UsageCount=1
    

    odbc.ini

    [MSSQLServer]
    Driver = SQL Server Native Client 11.0
    Description = Sample Database
    Trace = Yes
    Server = ****
    Port = 1433
    Database = master
    

    connect.php

    $dbh= new PDO('odbc:MSSQLServer', 'SQL_USER', 'SQL_PASS');
      $stmt = $dbh->prepare("$query");
      $stmt->execute();
      while ($row = $stmt->fetch()) {
          print_r($row);
      }
      unset($dbh); unset($stmt);

    error_log

    PHP Fatal error:  Uncaught exception 'PDOException' with message 'SQLSTATE[HYT00] SQLConnect: 0 [unixODBC][Microsoft][SQL Server Native Client 11.0]Login timeout expired' in /var/www/html/config/connect.php:40\nStack trace:\n#0 /var/www/html/config/connect.php(40): PDO->__construct('odbc:MSSQLServe...', 'SQL_USER', 'SQL_PASS')\n#1 /var/www/html/config/up_functions.php(3): require('/var/www/html/c...')\n#2 /var/www/html/index.php(3): require('/var/www/html/c...')\n#3 {main}\n  thrown in /var/www/html/config/connect.php on line 40

    line 40

    $dbh= new PDO('odbc:MSSQLServer', 'SQL_USER', 'SQL_PASS');

    Из командной строки (root) есть коннект через isql и sqlcmd

    Чего ему не хватает, кто-нибудь знает? Второй день бьюсь. И еще интересует вопрос - под Centos команды sqlsrv_* работать не будут? Только mssql_* ?

    16 сентября 2016 г. 19:36

Ответы

  • Проблема была в  Centos

    setsebool -P httpd_can_network_connect on
    setsebool -P httpd_can_network_connect_db on

    и все заработало...

    Только вот я так посмотрел - проще поставить PHP 5.2 и использовать штатный mssql_connect. С odbc уж очень много писанины получается в php-скриптах.

    25 сентября 2016 г. 22:16

Все ответы

  • Из командной строки (root) есть коннект через isql и sqlcmd

    Здравствуйте,

    - Уточните пожалуйста удачно коннект проходит локально на сервере баз-данных или удаленно?

    - Уточните пожалуйста значения TCP/IP и Names Pipes в
    "SQL server Configuration Manager" -> "SQL Native Client 11.0 Configuration" -> "Client Protocols"



    Best Regards, Andrei ...
    MCP

    • Изменено SQxModerator 17 сентября 2016 г. 21:01 добавлено
    17 сентября 2016 г. 21:00
    Модератор
  • Коннект проходит удаленно из Centos (не локалка).  TCP/IP и Именованные каналы включены. Порт 1433, интервал 1000, всё стандартно. Только версия SQL Native Client 10.0.
    17 сентября 2016 г. 22:01
  • Здравствуйте,

    А что за версия, билд, редакция MS SQL Server?

    На тестовой платформе Centos 6.8 (Apache/2.2.15 (Unix) DAV/2 PHP/5.6.25 mod_ssl/2.2.15 OpenSSL/1.0.1e-fips)  + MS SQL Server 2012 Web Edition не смог воспроизвести проблему, соединение проходит успешно.

    Best Regards, Andrei ...
    MCP

    20 сентября 2016 г. 6:56
    Модератор
  • Проблема была в  Centos

    setsebool -P httpd_can_network_connect on
    setsebool -P httpd_can_network_connect_db on

    и все заработало...

    Только вот я так посмотрел - проще поставить PHP 5.2 и использовать штатный mssql_connect. С odbc уж очень много писанины получается в php-скриптах.

    25 сентября 2016 г. 22:16