##環境
Windows Server 2012 R2 64bit (うちが納めたサーバーでないので古い)
IIS 6.2
SQL Server2014 Express
PHP 7.4 (MicrosoftはPHP8.0をサポートしないとか言ってるので7.4)
Symfony 5.2.3
接続先 Server 情報
Server = localhost¥¥SQLEXPRESS
uid = sa
password = password
database = symfonydb
DB 接続設定
DATABASE_URL=mssql://sa:password@localhost\\SQLEXPRESS/symfonydb
ここがみそだった。
DATABASE_URL=mssql://sa:password@localhost¥¥SQLEXPRESS/symfonydb
Windows下ではバックスラッシュは¥マークに見えるんですが、入力の仕方で本当に¥になってる感じで、vendorvendor\doctrine\dbal\lib\Doctrine\DBAL\Driver\PDOSqlsrv\Driver.php を追ってみたら、バックスラッシュでなく??になっていた。
#####デバッグ情報
// デバック用に1行追加
dump($this->_constructPdoDsn($params, $dsnOptions));
return new PDO\SQLSrv\Connection(
$this->_constructPdoDsn($params, $dsnOptions),
$username,
$password,
$pdoOptions
);
DATABASE_URL=mssql://sa:password@localhost¥¥SQLEXPRESS/symfonydb
Server=localhost??SQLEXPRESS;Database=symfonydb
Server=localhost\\SQLEXPRESS;Database=symfonydb
###その他
doctrine設定にurl追加
doctrine:
dbal:
# configure these for your database server
#driver: 'pdo_sqlsrv'
#server_version: '5.7'
#default_table_options:
# charset: utf8mb4
# collate: utf8mb4_unicode_ci
# ここがなかったので追加した
url: '%env(resolve:DATABASE_URL)%'
IIS PHP 7.4用のSQL Server Driver インストール
ドライバはいろいろあるが、、、
php_pdo_sqlsrv_74_nts_x64.dll
php_pdo_sqlsrv_74_nts_x32.dll
php_pdo_sqlsrv_74_ts_x64.dll
php_pdo_sqlsrv_74_ts_x32.dll
php_sqlsrv_74_nts_x64.dll
php_sqlsrv_74_nts_x32.dll
php_sqlsrv_74_ts_x64.dll
php_sqlsrv_74_ts_x32.dll
基本2つを選択して設定(コピー)する。
php7.4 64bit ノンスレッドセーフ
今回は上記なので、下記2本を PHPの入ってるフォルダのextへコピー(C:¥Program Files¥PHP¥v7.4¥ext)
php_pdo_sqlsrv_74_nts_x64.dll
php_sqlsrv_74_nts_x64.dll
Microsoft SQL Server 用 Drivers for PHP をダウンロードする
php.ini の設定
C:¥Program Files¥PHP¥v7.4¥php.ini
- MSSQL Serverドライバーの追加
- WARNINGはエラーとして通知しないように1行追加(DBを変更しただけでエラー?WARNING?が出たので)
...
[ExtensionList]
extension=php_mysqli.dll
extension=php_mbstring.dll
extension=php_gd2.dll
extension=php_gettext.dll
extension=php_curl.dll
extension=php_exif.dll
extension=php_xmlrpc.dll
extension=php_openssl.dll
extension=php_soap.dll
extension=php_pdo_mysql.dll
extension=php_pdo_sqlite.dll
extension=php_imap.dll
extension=php_tidy.dll
extension=php_pdo_sqlsrv_74_nts_x64.dll ;ここを追加(ノンスレッドセーフ)
extension=php_sqlsrv_74_nts_x64.dll ;ここを追加(ノンスレッドセーフ)
[sqlsrv] ;ここを追加
sqlsrv.WarningsReturnAsErrors = 0 ;ここを追加
sqlsrv.WarningsReturnAsErrorsについて
ドライバーの確認方法
毎回 NTS と TS のどっちをいれればいいか確認が持てなかった。
phpinfo();で確認できたのね。
<?php
phpinfo();
Thread Safety disabled
Thread Safety欄で disabled ならNTS、enableならTSドライバを使えばよかった。
ちなみに32bitか64bitはマイコンコンピュータのプロパティ等で確認忘れずに。
PHP 7.4
php 7.4はWeb Platform Installerで入れました。
うるおぼえですが、
SQL Driver もWeb Platform Installerで入れたのですが、うまく入らず上記でいれました。もしかしたら本当はちゃんとはいるのかも、、、