5

PHP 5.6.30 ( https://www.apachefriends.org/de/download.html ) を PHP 7.0 ( https://bitnami.com/stack/wamp/installer )にアップグレードしました。

これまでのところすべてうまくいき、MySQL データベースを使用すると、ページからの読み込み時間が 1.2 秒から 300 ミリ秒に短縮されました。しかし今、次の簡単なスクリプトを使用して 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);

?>

しかし、ログに次のようなエラーが表示されました。

[Thu Dec 10 11:55:26.629956 2015] [:error] [pid 260:tid 968] [client ::1:63003] PHP 致命的なエラー: キャッチされていないエラー: C:\Bitnami\ の未定義関数 odbc_connect() の呼び出しwampstack-7.0.0-0\apache2\htdocs\test\query.php:11\nスタック トレース:\n#0 {main}\n C:\Bitnami\wampstack-7.0.0-0\apache2\htdocs でスローされます11 行目の \test\query.php

最初に、私の php.ini に拡張子がないと思ったので、「extension=php_pdo_odbc.dll」を有効にしました

5.6 バージョンの php.ini との違いは、拡張機能「extension=php_mssql.dll」が有効になっていることです。しかし、新しい PHP 7.0.ini でそれらを見つけることができません

私の意図は、odbc と PHP 7 用の既存のドライバーがまだないということですか? ここで Linux 用のドライバーを見つけました: https://aur.archlinux.org/packages/php7-odbc/

しかし、Windows 環境には何かが必要です。

誰かが同じ問題を抱えていて、すでにそれを修正していますか?

ありがとうと挨拶 ドミ

4

8 に答える 8

2

php.ini ファイルを開き、コメントを解除するか、次の行を追加します。

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

インターネット インフォメーション サービスのリセット: コマンド プロンプトで管理者権限で次のように入力します。

iisreset

これで問題は解決しました。

于 2016-01-12T18:55:55.803 に答える
1

公式ドライバーについて言及している Adrian B`s への追加として、https://github.com/thomsonreuters/msphpsqlも確認できます。 これは非公式のポートです。ただし、当面の間、制限があります。

  1. sqlsrv ODBC のみをサポートし、PDO はサポートしません
  2. ZTS をサポートせず、NTS のみをサポート
  3. x86のみをサポート
  4. ODBC 関数のサブセットをサポートしています。ページでリストを確認できます。
于 2016-01-03T20:13:55.377 に答える
1

Microsoft の x86 ドライバーが必要です。 http://www.microsoft.com/ja-jp/download/details.aspx?id=13255 ※すみません、「ja-jp」は私のものです。あなたの国を選択してください。2 つのドライバーがあり、1 つは 32 ビットですが、64 ビット (x86) バージョンが必要です。次に、「ODBC データ ソース (64 ビット)」を設定できます。ウィンドウに表示されます。最後に、Web をチェックします。多分それはうまくいきます。3月29日。2016 内尾

于 2016-03-29T10:41:41.313 に答える
0

おっしゃるとおり、PHP クライアント プラットフォームと OS 用の SQL Server ODBC ドライバーをダウンロードする必要があります。
同様の問題のリンクは次のとおりです。未定義関数 odbc_connect() への呼び出し

また、MySQL 用のこのコネクタをインストールすることもできます (MySQL を使用している場合): Connector/ODBC

または、MSSQL を使用する場合: ODBC Driver 11 for SQL Server

于 2015-12-10T12:37:30.390 に答える