web-dev-qa-db-ja.com

PHP 7.0 Windows用ODBC-Driver

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-Databaseに接続しようとしています。これは、古いインストール(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 Fatal error:Uncaught Error:Call to undefined function C:\ Bitnami\wampstack-7.0.0-0\Apache2\htdocs\test\query.php:11\nStack trace:\ n#0 {main}\nのodbc_connect()がC:\ Bitnami\wampstack-にスローされました7.0.0-0\Apache2\htdocs\test\query.php(11行目)

最初に、私の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環境に何かが必要です。

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

ありがとうund挨拶ドミ

4
user2077480

あなたのphp.ini、文字列を見てみましょう

extension=php_odbc.dll

新しいインストールでは不足しているようですが、少なくとも新しいXAMPPインストール(7.0.1)に手動で追加する必要があり、誤ってpdo_odbc.dllをアクティブ化しただけです

10
fweber

PHP7 以前に有効になっていたいくつかのモジュールがデフォルトで無効になっています PHP5

ただし、拡張機能は付属の\ext\フォルダにすでに存在しているはずなので、簡単に修正できます。 PHP7php.iniファイルを変更して、次の行を含めるだけです。

extension=php_odbc.dll

上の行はnotがすでに存在し、コメント化されています。実際に追加する必要があります!

PHPはphp.iniC:\Windows\ファイルを検索しますが、マシン上の他の場所にある場合もあります。 C:\Windows\C:\php\の両方、またはPHPをインストールした可能性のある場所を確認してください。

変更後、次のようにコマンドラインから結果を確認できます。

C:\php\php.exe -m

または(Webサーバー/マシンを再起動した後).phtmlファイルから次のようにします。

<? phpinfo(); ?>

これにより、有効化されたモジュールのリストが出力されます。 odbc;そうでない場合は、間違ったphp.iniファイルを変更している(見続ける)か、Webサーバー/マシンの再起動を忘れている可能性があります。


チップ:

非標準のインストールがある場合は、次のような絶対パスを使用できます。

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

extension = php_mssql.dll(またはMicrosoft Drivers for PHPから取得する場合はextension = php_sqlsrv_56_nts.dll)が問題です:PHP 7のMicrosoft SQLドライバーはまだ準備ができていません。最新のETAは1月下旬のベータ版です。

遅延の原因は、SQL 2016をそのドライバーに含めることで、将来の移行を容易にするためです。

更新(2016/02/12):

述べたように ここ (meet-bhagdev返信)、PHP Windows用のsqlsrvドライバーの github の「初期技術プレビュー」があります=。

3
Adrian B

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

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

インターネットインフォメーションサービスのリセット:コマンドプロンプトで、管理者権限の種類を入力してください:

iisreset

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

2
Jhollman Cutcsa

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

  1. Sqlsrv ODBCのみサポートしますが、PDOはサポートしません
  2. ZTSをサポートせず、NTSのみをサポート
  3. X86のみをサポート
  4. ODBC functionsのサブセットをサポートしています。ページでリストを確認できます。
1
Akin Ocal

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

1
Naio

この質問はかなり古いです。しかし、最近同じ問題に遭遇しました...

@Naioは正しいです。確かに、アーキテクチャに基づいてODBCドライバの異なるバージョンがあります(32ビットまたは64ビット)。PHPが使用するドライバは、独自のバージョン。

つまり、32ビットのODBC環境を使用している場合は、32ビットバージョンのPHP ...

私の推測では、PHP 5.6からPHP 7.0に切り替えることにより、32ビットバージョンから64ビットバージョンに切り替えました。

0

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

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

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

0