it-swarm.com.ru

PHP 7.0 ODBC-драйвер для Windows

Я обновил свой PHP 5.6.30 ( https://www.apachefriends.org/de/download.html ) до PHP 7.0 ( https://bitnami.com/ стек/wamp/установщик )

Пока все работало нормально, и это сокращает время загрузки с моей страницы с 1,2 до ~ 300 мс, когда я использую базу данных MySQL. Но сейчас я пытаюсь подключиться к базе данных MSSQL с помощью следующего простого скрипта, который отлично работал с моей старой установкой (PHP 5.6):

<?php
    //Use the machine name and instance if multiple instances are used
    $server = 'Server-Adress';
    $user = '';
    $pass = '';
    //Define Port
    $port='Port=1433';
    $database = 'Databasename';

    $connection_string = "DRIVER={SQL Server};SERVER=$server;$port;DATABASE=$database";
    $conn = odbc_connect($connection_string,$user,$pass);
    if ($conn) {
        echo "Connection established.";
    } else{
        die("Connection could not be established.");
    }

    $sql = "SELECT * FROM st3_200 WHERE identifier = 1";

    $result = odbc_exec($conn,$sql);
    // Get Data From Result
      while ($data[] = odbc_fetch_array($result));

      // Free Result
      odbc_free_result($result);

      // Close Connection
      odbc_close($conn);

      // Show data
      print_r($data);

?>

Но теперь я получил ошибку в моих журналах, которая говорит:

[Чт 10 декабря 11: 55: 26.629956 2015] [: ошибка] [pid 260: tid 968] [клиент :: 1: 63003] PHP Неустранимая ошибка: необработанная ошибка: вызов неопределенного Функция odbc_connect () в C:\Bitnami\wampstack-7.0.0-0\Apache2\HTDOCS\Test\query.php: 11\nStack трассировка:\n # 0 {main}\n добавлено C:\Bitnami\wampstack-7.0.0-0\Apache2\htdocs\test\query.php on строка 11

Сначала я подумал, что в моем php.ini отсутствует расширение, поэтому я включил «extension = php_pdo_odbc.dll» 

отличие от php.ini в версии 5.6 заключается в том, что расширение: "extension = php_mssql.dll" включено. Но я не могу найти их в новом PHP 7.0.ini

Так что я намерен сказать, что еще не существует драйвера для odbc и PHP 7? Я нашел драйвер для Linux здесь: https://aur.archlinux.org/packages/php7- odbc/

Но мне нужно что-то для моей среды Windows.

У кого-нибудь была такая же проблема и уже исправили?

Спасибо и Приветствие Доми

3
user2077480

Загляните в свой php.ini, строку

extension=php_odbc.dll

кажется, отсутствует в новых установках, по крайней мере, мне пришлось добавить его вручную в моей новой установке XAMPP (7.0.1) и случайно просто активировал pdo_odbc.dll

8
fweber

PHP7 по умолчанию отключено несколько модулей, которые ранее были включены в PHP5,.

Это легко исправить, так как расширение уже должно существовать в папке \ext\, которая поставляется с PHP7, Вам просто нужно изменить свой php.ini файл, включив в него строку:

extension=php_odbc.dll

Строка выше не уже присутствует и закомментирована; Вы действительно должны добавить это!

PHP ищет файл php.ini в C:\Windows\, но он также может находиться в другом месте на вашем компьютере. Так что проверьте оба C:\Windows\ и C:\php\ или где-либо еще у вас установлен PHP.

После внесения изменений вы можете проверить результаты из командной строки следующим образом:

C:\php\php.exe -m

или (после перезапуска веб-сервера/компьютера) из файла .phtml, например:

<? phpinfo(); ?>

Это выведет список включенных модулей, которые теперь должны включать odbc; если нет, то вы могли изменить неправильный файл php.ini (продолжайте искать) или забыли перезапустить веб-сервер/компьютер.


Подсказки:

Если у вас нестандартная установка, вы можете использовать абсолютный путь, например:

extension=C:\php7x64\ext\php_odbc.dll
4
Tim Penner

ваше расширение: расширение = php_mssql.dll (или расширение = php_sqlsrv_56_nts.dll, если вы получаете его от Microsoft Drivers для PHP): драйвер Microsoft SQL для PHP 7 еще не готов, последнее ETA в конце января для бета.

Похоже, что причиной задержки является намерение включить SQL 2016 в этот драйвер, чтобы вы могли легче перейти в будущем.

ОБНОВЛЕНИЕ (2016/02/12):

Как указано здесь (ответ meet-bhagdev), существует «ранний технический предварительный просмотр» драйвера PHP sqlsrv для Windows, доступный на github .

3
Adrian B

Откройте файл php.ini и раскомментируйте или добавьте следующие строки:

extension_dir = "C:\PHP\ext"  ;<- your PHP path
extension=php_pdo_odbc.dll
extension=php_odbc.dll

Сбросить службы IIS: В командной строке с правами администратора: 

iisreset

Это решило проблему для меня.

2
Jhollman Cutcsa

В дополнение к Adrian B`s, в котором упоминается официальный драйвер, вы также можете проверить https://github.com/thomsonreuters/msphpsql Это неофициальный порт. Однако на данный момент существуют ограничения.

  1. Поддерживает только sqlsrv ODBC, но не PDO
  2. Не поддерживает ZTS, только NTS
  3. Поддерживает только x86
  4. Он поддерживает подмножество функций ODBC, вы можете увидеть список на странице.
1
Akin Ocal

Нам нужен драйвер x86 от Microsoft . http://www.Microsoft.com/ja-jp/download/details.aspx?id=13255 * Извините, ja-jp - мое , Пожалуйста, выберите вашу страну. Есть 2 драйвера, один 32-битный, но нам нужна 64-битная (x86) версия . Затем мы можем установить «ODBC data source (64bit)». Появляется в окне . Наконец, проверьте ваш веб. Может быть, это работает . Мар. Двадцать девятый. 2016 Naio

0
Naio

Я думаю, вы были правы, вам нужно загрузить драйвер SQL Server ODBC для вашей PHP клиентской платформы и ОС.
Вот ссылка на похожую проблему: вызов неопределенной функции odbc_connect ()

также вы можете попробовать установить этот коннектор для MySQL (если вы используете MySQL): Connector/ODBC

или если вы используете MSSQL: ODBC драйвер 11 для SQL Server

0
Nikolay Yenbakhtov