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

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

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

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

Q&A

解決済

2回答

720閲覧

同じPHPのスクリプトなのに、環境違いで、DB:SQLServerへの接続状況に違いがある

saya24

総合スコア258

PHP

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

0グッド

0クリップ

投稿2024/07/08 08:07

編集2024/07/08 08:30

実現したいこと

Apache2.4.41 / PHP8.3.9 の組み合わせで動作する環境が 当方の手もとに 2つ あります。
Windows10端末 2台で、検証端末1と検証端末2みたいな位置づけです。(サーバ運用中のPHPのVerUpに備えて、移行リハを実施している感じ)

厄介なことに、同じWebページ(.php)のファイルが DB接続に関し 挙動に違いが生じています。

【実現したいこと】
この2台で 同じPHPのスクリプトを実行した場合は 当然同一の挙動を達成したい。

発生している問題・分からないこと

検証機の1台目は SQLServerに無事接続して 関連テーブルからデータを取得して ページに表示できるが 検証機の2台目では 以下エラーがPHPのログファイルに出力され、SQLServerへの接続に失敗する。

しつこいですが 同じWebページ=同じPHPのスクリプトの実行状況に差があります!

エラーメッセージ

error

1[08-Jul-2024 16:02:31 Asia/Tokyo] PHP Fatal error: Uncaught PDOException: SQLSTATE[08001]: [Microsoft][ODBC Driver 18 for SQL Server]SSL プロバイダー: 信頼されていない機関によって証明書チェーンが発行されました。 2 in C:\Apache24\htdocs\MSSQLSelect.php:33

該当のソースコード

PHP

1<?php 2 //PDOオブジェクトの生成 3 $serverName = 'XX.XX.XX.X'; 4 $database = 'XXXX'; 5 $uid = 'XXXXXXXX'; 6 $pwd = 'XXXX'; 7 $conn = new PDO( "sqlsrv:server=$serverName;Database = $database", $uid, $pwd);

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

こちらの記事
では SQLServerへの接続方法自体を 変更する手立てが紹介されています。
確かに 修正すれば 双方の環境で 無事SQLServerへ接続できるようになるのかもしれませんが、環境違いで 同じプログラムで挙動が違う状況が どうしても気になってしまいます。(修正に躊躇する)

補足

SQLServerとのやりとりを行うため 双方の環境に
Microsoft ODBC Driver 18 for SQL Server なる ドライバをインストール済です。

同じインストーラを活用して セットアップしている認識です。イメージ説明

双方のWindows10端末は 同じドメイン・セグメント上の端末で、同じhostsファイルが 配置されている状況を 確認済です。

皆様のご見解 お待ち申し上げております。

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

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

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

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

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

tezcello

2024/07/08 08:40

> 環境違いで 同じプログラムで挙動が違う 結果が違うという事は、同じプログラムでも「同じ環境」ではないという事でしょう。 SQLServer側に、接続元による差異が無い事も確認が必要でしょう。
saya24

2024/07/08 09:07

ご見解ありがとうこざいます。 SQLServerである接続先情報は 双方の環境に配置してある 話題のPHPに直書きのため違いはありません。 OSやミドルなど何に違いがあることを疑って確認をすすめるでしょうかね
tezcello

2024/07/08 09:44

> SQLServerである接続先情報は 双方の環境に配置してある いいえ、SQLServerから見た接続「元」によってアカウントに差は無いかと言う意味です。 __SQLServerにそういう設定があるのかは知りませんが
dodox86

2024/07/08 10:44

これに該当するのではないでしょうか。 [SNAC アプリケーションをアップグレードした後の "信頼されていない機関によって証明書チェーンが発行されました" エラー - Microsoft Learn] https://learn.microsoft.com/ja-jp/troubleshoot/sql/database-engine/connect/certificate-chain-not-trusted?tabs=odbc-driver-18x 記事中の「原因」に当てはまっているか否か確認してみてください。当てはまっているなら、「ODBC Driver 18 for SQL Server」を使うには接続方法をより明示的に設定する必要があるのだと思います。
saya24

2024/07/08 13:46

dodox86さん、ご見解ありがとうございます。 明日出社後に確認して 報告を改めます。 ご紹介の記事をまだ十分に理解したできていないのですが、双方の端末で、WindowsUpdateのあたり具合に差があり得ることが要因かな??とか 推察をたてています。
saya24

2024/07/09 02:27

無事に問題解決しました、dodox86さんのおかげです! ODBCのドライバに再度視点を向けられたことが 解決の糸口となりました。 ありがとうございました。  
dodox86

2024/07/09 02:38

> ODBCのドライバに再度視点を向けられたことが 解決の糸口となりました。 解決できて何よりでした。回答として必要な情報をご自身でも投稿し、質問を閉じていただければと思います。よろしくお願いします。
guest

回答2

0

環境が違うのでしたら同じとは言えないですね。
まずIPアドレスが違うでしょうし、当然アクセス制御も違うでしょう

投稿2024/07/08 08:47

yambejp

総合スコア117734

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

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

0

自己解決

dodox86さんご紹介の記事をもとに、再度ODBCドライバについて、双方の環境で違いがないか確認したことで 問い合わせ発端になった疑問を払拭することができました。

恥ずかしながら、やはり環境・状況に違いが生じておりました。
SQLServerへ無事接続・データを表示できていた端末側の ODBCドライバは かつて 13 というVerしかインストールされていなかったとみえ、セキュリティレベルが低いドライバだった模様です。

イメージ説明接続・データを表示できていなかった環境にインストーラした Ver:18 のODBCドライバを データを表示できていた環境(かつて 13 のドライバしかインストールされていなかった環境)へ インストールすると

想定どおり、話題にしているPHPのスクリプトは 接続失敗・データの表示に失敗することを確認できました。
また ご紹介記事にあった 接続時の暗号化オプションを追加記述することで 接続・データも現れるようになりました。

dodox86さん 貴重なヒントのご提示 まことにありがとうございました。

投稿2024/07/09 02:36

編集2024/07/09 02:43
saya24

総合スコア258

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問