0

apacheを(xampp経由で)サービスとしてではなくスタンドアロンサーバーとして実行した場合(Windows Server 2008の場合)

次の接続コードを使用すると、すべてが正常に機能します(ユーザー名とパスワードが削除されます)

$server = "WMS";
$link  = odbc_connect($server,'','');

if (!$link) {
    die('Something went horribly wrong while connecting to MSSQL');
}else {echo('');}

ただし、Windowsでサービスとして実行するようにapacheを変更すると、接続が切断され、次のエラーメッセージが表示されます。

    Warning: odbc_connect() [function.odbc-connect]: SQL error: [Microsoft][ODBC Driver Manager] 
Data source name not found and no default driver specified, SQL state IM002 in SQLConnect in 
C:\xampp\htdocs\Dev\well.php on line 30

     Something went wrong while connecting to MSSQL
4

1 に答える 1

1

ドキュメントをお読みください:http://uk.php.net/manual/en/function.odbc-connect.php

$server = "WMS";その名前で構成されたODBCエイリアス/データソースがあることを示します。エラーメッセージは、そのような名前(WMS)のデータソースが見つからないことを明確に示しています。Windows 7 / Vista / XP / Serverでは、[スタート]->[管理ツール]->[データソース(ODBC)]で構成できます。古いOSではパスが異なる場合があります。いずれの場合も、「MicrosoftODBCデータソースアドミニストレータ」を探してください。

エイリアスを使用する代わりに、(私がいつも接続する方法で)完全なDSN名を使用することをお勧めします。

// Microsoft SQL Server using the SQL Native Client 10.0 ODBC Driver - allows connection to SQL 7, 2000, 2005 and 2008
$link = odbc_connect("Driver={SQL Server Native Client 10.0};Server=$server;Database=$database;", $user, $password);

この場合、すべてがスクリプトの一部であり、外部の依存関係はありません。

ところで-ODBC関数を使用する代わりに、MS SQL Server専用のPDOとドライバーを使用することをお勧めします: PDO_SQLSRV - http ://uk.php.net/manual/en/ref.pdo-sqlsrv.php (またはMicrosoft SQL古い手続き型のスタイルを好む場合のPHP用サーバードライバー-http: //uk.php.net/manual/en/book.sqlsrv.php

于 2012-04-24T12:14:12.200 に答える