2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Windows版PHP8+PDOでSQLServer2019Expressにアクセスしてみる

Last updated at Posted at 2020-12-03

目的

Windows 10 Pro x64 + httpd-2.4.46-o111h-x64-vc15 に
php_sqlsrv_80_ts、php_pdo_sqlsrv_80_ts をインストールして
SQL Server 2019 Expressにアクセスしてみる
※現在phpinfoでpdoモジュールを認識しないことを確認(解消されている)
※一度 pdo_odbc のみで認識させると php_pdo_sqlsrv_80_ts が正常に認識されるようだ・・・
※pdo周りはまだ不安定のようだ pdo_pgsql 単独指定だと phpinfoのpdo欄には表示されないが、pdo_pgsql は表示される
※pdo_odbc,pdo_pgsql の指定で、phpinfoのpdo欄にpdo_odbc,pdo_pgsql共に表示される

対象データはAdventureWorksLT2019を復元しておく
※LoadModule php_module に変更されたことに注意(php8_module ではない)

ダウンロード

PHP 8.0 (8.0.0)より
VS16 x64 Thread Safe(php-8.0.0-Win32-vs16-x64.zip)をDLして、適当なフォルダに解凍して配置する。
※自分の場合は C:\Dev\Lang\php8 とリネームして配置
※現在 ext 以下のモジュールは古い環境でコンパイルしたようだ(compiled with module API=20180731\nPHP)

SQL Server 用のドライバのインストール

microsoft/msphpsql
より Support for PHP 8.0 の最新版をDL後適当なフォルダで解凍する
php_sqlsrv_80_ts、php_pdo_sqlsrv_80_tsを C:\Dev\Lang\php8\ext 以下にコピーする
※PHP Warning: PHP Startup: Unable to load dynamic library 'php_pdo_sqlsrv_80_ts' で認識されないようだ

httpd.confの修正

C:\Apache24\conf\httpd.conf の最後に以下を追加する


LoadModule php_module C:\Dev\Lang\php8\php8apache2_4.dll
AddHandler application/x-httpd-php .php
AddHandler application/x-httpd-php-source .phps
PHPIniDir  "C:/Dev/Lang/php8"

php.iniの修正

short_open_tag = On ;これは好みかなぁ・・
zend.multibyte = On
zend.script_encoding = UTF-8
extension_dir = "ext"
cgi.force_redirect = 0
cgi.fix_pathinfo = 1
fastcgi.impersonate = 1
fastcgi.logging = 0
extension=php_mbstring
extension=php_sqlsrv_80_ts
extension=php_pdo_sqlsrv_80_ts

mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.encoding_translation = Off
mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII
mbstring.substitute_character = none
mbstring.func_overload = 0
mbstring.strict_detection = auto

動作の確認

apache を再起動する
C:\Apache24\htdocs 以下に以下を配置


> cat info.php
<?php phpinfo(); >

http://localhost:8080/info.php にアクセスすると phpinfo が表示される
※以下はリリース版が出た後に確認かな??
sqlsrv、pdo_sqlsrvが認識されていることを確認する

サンプルコード

<?php
	$dsn = 'sqlsrv:server=localhost;database=AdventureWorksLT2019';
	$user = 'demo';
	$password = 'demo';

    $dbh = new PDO($dsn, $user, $password);
    
    $sql = "select * from SalesLT.Address";
    foreach ($dbh->query($sql) as $row) {
        print($row['AddressID'] . ' ' . $row['AddressLine1']);

    }
	$dbh = null;
?>

参考にしたのは以下のサイト

Windows 10 に Apache をインストールしてみる
Windows版PHP+PDOでSQLServerにアクセスしてみる
Ubuntu 16.04 x64 + SQL Server2017 Express で AdventureWorks2017.bak を復元してみる
httpd.conf on Windows: can't locate API model structure php8_module

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?