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挨拶ドミ
あなたのphp.ini、文字列を見てみましょう
extension=php_odbc.dll
新しいインストールでは不足しているようですが、少なくとも新しいXAMPPインストール(7.0.1)に手動で追加する必要があり、誤ってpdo_odbc.dllをアクティブ化しただけです
PHP7 以前に有効になっていたいくつかのモジュールがデフォルトで無効になっています PHP5。
ただし、拡張機能は付属の\ext\
フォルダにすでに存在しているはずなので、簡単に修正できます。 PHP7。 php.ini
ファイルを変更して、次の行を含めるだけです。
extension=php_odbc.dll
上の行はnotがすでに存在し、コメント化されています。実際に追加する必要があります!
PHPはphp.ini
でC:\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
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 の「初期技術プレビュー」があります=。
Php.iniファイルを開いて、コメントを解除するか、次の行を追加します。
extension_dir = "C:\PHP\ext" ;<- your PHP path
extension=php_pdo_odbc.dll
extension=php_odbc.dll
インターネットインフォメーションサービスのリセット:コマンドプロンプトで、管理者権限の種類を入力してください:
iisreset
これで問題が解決しました。
公式ドライバについて言及しているAdrian Bの追加として、以下もチェックできます https://github.com/thomsonreuters/msphpsql これは非公式のポートです。ただし、当面は制限があります。
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ナイオ
この質問はかなり古いです。しかし、最近同じ問題に遭遇しました...
@Naioは正しいです。確かに、アーキテクチャに基づいてODBCドライバの異なるバージョンがあります(32ビットまたは64ビット)。PHPが使用するドライバは、独自のバージョン。
つまり、32ビットのODBC環境を使用している場合は、32ビットバージョンのPHP ...
私の推測では、PHP 5.6からPHP 7.0に切り替えることにより、32ビットバージョンから64ビットバージョンに切り替えました。
SQL Serverをダウンロードする必要がありますODBCドライバーPHPクライアントプラットフォームとOS。
同様の問題のリンクは次のとおりです: 未定義の関数odbc_connect()への呼び出し
また、MySQL(MySQLを使用している場合)にこのコネクタをインストールすることもできます: Connector/ODBC
またはMSSQLを使用する場合: ODBC Driver 11 for SQL Server