29

この質問を Google で検索すると、誤った情報、誤解を招く情報、古い情報が多数見つかります。驚いたことに、スタック オーバーフローには確かな答えがないので、それを変更する必要があります。

Apache と PHP の Mac ポート インストールを使用しています。php5-mssql をインストールしました。phpinfo() ページに mssql が表示されます。

しかし、PDOの下にリストされていません。

PDO support enabled
PDO drivers     dblib, mysql, odbc, pgsql 

mssql は PDO に関連付けられていませんか? PDO を使用して SqlServer データベースに接続するために Mac で使用できる別のドライバーはありますか? これは可能なはずのことのようです。

4

5 に答える 5

5

dblibは、UNIX システム上の mssql で使用する必要があるドライバーです。

他のものをインストールする必要はありません。

<?php
    $dsn = 'dblib:dbname=testdb;host=127.0.0.1';
    $user = 'dbuser';
    $password = 'dbpass';
    $dbh = new PDO($dsn, $user, $password);
于 2012-11-24T05:13:11.373 に答える
5

多くのスレッドを調べた結果、PHP 7 以前の Mac OS X から MSSQL に接続する最善の方法は、dblib を使用することであることがわかりました。(正しいphpバージョンをダウンロードするだけです)

次の手順に従うと (mssql.so 拡張子は無視して)、非常に簡単に接続できます。

https://github.com/BellevueCollege/public-docs/blob/master/PHP/configure-mssql-pdodblib-mac.md

OS X El Capitan、PHP 7 の Bitnami で完璧に動作しました。

手順 1.- XCode をインストールする

$ xcode-select ---install

2.-自作をインストールする

3.- Homebrew を使用して autoconf をインストールします。

$ brew install autoconf

4.- FreeTDS をインストールする

$ brew install freetds

5.- PHP ソースのバージョンをダウンロードし、解凍します。

6.- PDO DBLIB 拡張機能をビルドします (PHP 5.5.14 の例)

$ cd php-5.5.14/ext/pdo_dblib
$ phpize
$ ./configure --with-php-config=/usr/bin/php-config --with-pdo-dblib=/usr/local/
$ make
$ sudo cp modules/pdo_dblib.so /usr/lib/php/extensions/no-debug-non-zts-20121212

7.- .so 拡張子を php.ini extension=pdo_dblib.so に追加します。

8.-Apacheを再起動します

9.- dblib dsn を使用して接続します。

$pdo = new PDO("dblib:host=$dbhost;dbname=$dbname","$dbuser","$dbpwd");
于 2016-06-08T15:57:54.400 に答える
1

pdo_dblib ドライバーのインストールに成功した素晴らしいガイド ( https://stackoverflow.com/a/37707426 ) を提供してくれた Esteban に感謝します。

ただし、提供された dblib dsn を使用して PHP (5.5) と FreeTDS を使用して OSX 10 から Azure SQL データベースに接続する際に問題がありました。最終的に修正されたのは、Azure データベース (m53man42a) をユーザー名に追加することでした。

PHP での私の dblib PDO 接続:

$conn = new PDO("dblib:host=azure-sql;dbname=my-database-name", 
"username@m53man42a",
"my-secret-password");

私の FreeTDS.conf:

[azure-sql]
host = m53man42a.database.windows.net
port = 1433
tds version = 8.0
client charset = UTF-8
text size = 20971520

これをリストの箇条書き 10 番に追加することを検討してください... :D

于 2016-09-20T08:05:54.083 に答える