質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

3回答

4585閲覧

PHPからsqlsrvを用いたSQLServer接続に失敗

NEO_PLANETT-777

総合スコア333

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2019/07/29 06:08

編集2019/07/29 08:02

現在下記状態で、構成しておりますが、PHPからSQLServerへアクセスできません。

OS:WindowsServer2008 R2
WEBサーバ:IIS
PHP:5.6
SQLServer:2008 R2(RTM)

現在サーバーにODBCをインストール。
PHP側でsqlsrvドライバをiniへ設定し認識。
PHPソースへ下記を記述。

PHP

1// SQLServer接続設定 2 $connInfo = array( 3 "UID" => $SSUSER, 4 "PWD" => $SSPASS, 5 "Database" => $SSDBNM, 6 "CharacterSet" => "UTF-8" 7 ); 8 9 // SQLServerコネクションのオープン 10 $ssConn = sqlsrv_connect($SSSRVNM, $connInfo); 11 12 13 print_r( sqlsrv_errors() ); 14

出力メッセージが下記となっております。

This extension requires the Microsoft SQL Server 2012 Native Client, or SQL Server 2008 Native Client, SQL Server 2005 Native Client. Access the following URL to download the Microsoft SQL Server 2012 Native Client ODBC driver for x64

ODBC x64ドライバは、先日導入済です。
ODBCは入れた後に、何か設定等が必要なのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/07/29 06:25

コードはマークダウンのcode機能を利用してご提示ください
NEO_PLANETT-777

2019/07/29 06:32

> mts10806様 その解決は、ドライバの読み込みが成功したので一旦クローズしました。 今回は、その延長線上で、実際には失敗していたので質問を再度しております。 前回と違い、ドライバも読み込まれている状態ですので、環境設定で何か不足が 存在するのかと思い、質問させて頂きました。
m.ts10806

2019/07/29 07:45

なるほど。ではタイトルで「問題の段階が違う」ことが分かるようにしておいてもらえると。
guest

回答3

0

ベストアンサー

ODBCなのにPDO使うってよく分からないし、PDO使ってるつもりなのにsqlsrv_connectを使ってるのも訳が分からないし、サーバーにODBC入れるっていうのも分からない

メダパニ状態なようなので、一旦状況と情報をまとめてテキストにでも書き下ろして、必要な手段を確認し直すのがいいんじゃないでしょうか?
それか確認飛ばすなら、とりあえずそれぞれの繋ぎ方見て使えそうなもの試したらどうでしょうか?

投稿2019/07/29 06:59

hentaiman

総合スコア6389

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

NEO_PLANETT-777

2019/07/29 07:09

すみません初めての事で色々間違った解釈してるかもしれません。 PHPで接続を調べて、sqlsrvドライバを導入するとあったので、導入しました。 でもsqlsrv_connectでエラーしていたので、更に調べてみたらODBCが必要と書かれていたので ODBCをサーバーにインストールしました。 で確認してみたのですが、やはりsqlsrv_connectでエラーしている…。 だったので、他に何か必要な設定が抜けてるのかと思い、質問しました。
NEO_PLANETT-777

2019/07/29 07:11

私の勘違いか、PDOとsqlsrvって別物なんですかね? 自分の接続イメージは下記ですが、間違ってます?? PHP → sqlsrv_connect → ODBC → SQLServer
hentaiman

2019/07/29 07:24

イメージの前にODBCが何なのか、PDOが何なのかを調べた方がいいけど、とりあえずODBCなんて今時使わんのじゃない? php pdo sqlserverで検索すれば接続方法なんていくらでも出てくるよ サーバー側はそのままでいいから、クライアント側を一度最初から設定し直してみたら?
NEO_PLANETT-777

2019/07/29 08:28

PDO接続を試してみました。 try { $conn = new PDO($SSDNS, $SSUSER, $SSPASS); } catch(PDOException $e) { echo "PDO Connection Error"; } 以下メッセージが出てるんですが、ODBC x64 はインストール済なんです。 PDO Connection Error : exception 'PDOException' with message 'SQLSTATE[IMSSP]: This extension requires either the Microsoft SQL Server 2012 Native Client, the Microsoft SQL Server 2008 Native Client or the Microsoft SQL Server 2005 Native Client to communicate with SQL Server. Access the following URL to download the Microsoft SQL Server 2012 Native Client ODBC driver for x64
hentaiman

2019/07/29 08:48

はい https://docs.microsoft.com/ja-jp/sql/connect/php/example-application-pdo-sqlsrv-driver?view=sql-server-2017 はい https://www.php.net/manual/ja/ref.pdo-sqlsrv.connection.php ODBCにこだわるならこっち https://www.php.net/manual/ja/ref.pdo-odbc.php 自分は英語のテストで一桁点数取っていたぐらい英語苦手ですが、それでもそのエラーメッセージときみの理解で乖離がある事は分かるぞ、まずはエラーメッセージちゃんと読もうぜ まあ読まなくても上のURLの対応すればエラー消えそうだけど もう一度書くけど、ODBCとPDOが何なのかの調査してみたら?、それとクライアントを一度最初から設定し直してみたら?それぞれの繋ぎ方を試したかどうかもそのコメントからは分からないし。 教えた事について調べて試してそれでも分からないなら手を貸してもいいかなって気になるけど、それをせず質問文にあるエラーをコピペされても答える気起きないぞ
NEO_PLANETT-777

2019/07/29 08:56

あ、道筋見えてきた気がします。 有難うございます! 後程結果を報告させて頂きます。
NEO_PLANETT-777

2019/07/30 01:54

hentaiman様 一つ質問させて下さい。 PDOをインスタンスする際にtry,chatchで、エラーを捕まえたのですが 「could not find driver1」と出てきており、ドライバー1が見付らない と言っているが、このドライバー1が何なのかが不明なんです。 何か設定が変になったのか?自分が環境設定を怠っていてデフォなのか? 何を意味するものなのでしょうか?
hentaiman

2019/07/30 03:32

1なんてドライバーないよ、コード全部見たわけじゃないから分からんけど多分自分でechoとかデバッグ系の出力してるか、気付かないうちに1を出力するような関数を使ってるんだと思うよ それと開発中はtry~catchしなくていいよ、大衆に向けてサービス提供する時の予防線だから、開発中は普通にエラーで止まってくれた方がやり易いと思うよ、一通り動作する事確認出来てからtry~catchに入れたら良い まずは$conn = new PDO($SSDNS, $SSUSER, $SSPASS);だけを書いてどんなエラーが出るかどうかと、変数に入ってる値が正しいかどうかをechoするかログに出して確認しつつ頑張ってください ドライバーが無いんだからドライバーを入れたらいいんじゃない?IISは使った事無いから分からんけど、sqlserverに限らずmysqlでもpostgresでも、使いたいDBに合わせたドライバーを入れないと動きませんよ ※ドライバーも検索したら出てくる https://docs.microsoft.com/ja-jp/sql/connect/php/configuring-iis-for-php-sql-driver?view=sql-server-2017 あとは頑張って
NEO_PLANETT-777

2019/07/30 09:07

有難うございました。 紆余曲折しながら、何とか繋がりました。
guest

0

PHPからSQL Serverへの接続に関するものはこのあたりに纏められてます。
(docs.microsoft.com)Microsoft SQL Server 用 Drivers for PHP
※現在もメンテナンスされています。

OS/PHP/SQL Serverそれぞれのバージョンによりインストールするドライバーのバージョンが異なりますので、これに従って今一度環境を整理されると良いと思います。

投稿2019/07/29 08:57

Y.H.

総合スコア7914

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

最終的に以下をサーバーへインストールする事で解決しました。
途中のコードはご教授頂いた事でクリアーしました。

Microsoft® SQL Server® 2008 R2 Native Client

投稿2019/07/30 09:12

NEO_PLANETT-777

総合スコア333

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問