この組み合わせの記事がなかなか探せず、2,3日かかかったのでメモ。
どなたかのお役にたてば。
PHPの選択
SQLサーバの用PDOはPHP 7.1系では動かなかったので(2017/6/23現在)PHPは7.0系で。
自分はntsの64bitを選択。そのうち7.1用のPDOが出るかもしれない。
SQL Server用のPDOの入手
https://www.microsoft.com/en-us/download/details.aspx?id=20098
から7.0用をダウンロードして解凍(自分はntsの64bitを使用)。
適切なものをextにコピー。
php.iniに
extension=php_sqlsrv_7_nts_x64.dll
extension=php_pdo_sqlsrv_7_nts_x64.dll
とか追記しておく。
CakePHPを取ってくるために、composerをいれる
公式サイトのexeインストーラーを使うとcomposerさんがどこに入ったか解らなくなってしまった。
なのでここはphpさんに取ってもらう。
取ってくるときにSSLを使うようなので、php.iniで
extension=php_openssl.dll
を有効にしておく。
extension=php_intl.dll
も有効にしておかないと、CakePHPを引っ張ってくるときにエラーが出るので有効にする。
タイムゾーンもAsia/Tokyoをセットしておく。
mkdir c:\bin (場所はお好みで。作ったらパスを通しておく)
cd c:\bin
php -r "readfile('https://getcomposer.org/installer');" | php
composer xxx で起動できるようにバッチ化。
echo @php "%~dp0composer.phar" %*>composer.bat
Gitちゃんを入れる
とりあえず入れておく。
https://git-for-windows.github.io/
ComposerでhogeにCakePHPを入れる
以下、コマンドは管理者権限で。
cd c:\intepub\wwwroot
mkdir hoge
ディレクトリを作ったら、一つ上(c:\inetpub\wwwroot)で下記を実行
composer create-project --prefer-dist cakephp/app hoge
リライト用のweb.configを作る
付属の.htaccessに手を加えてインポートするのが簡単。
リライトモジュールのインストール
IIS用urlリライトモジュールは、windows 10 だとwebinstallerから落とすと蹴られた。
なので、英語版のスタンドアロンのインストーラを使ってインストールする。
https://www.iis.net/downloads/microsoft/url-rewrite
web.configをhogeの下におく
https://book.cakephp.org/3.0/ja/installation.html
にIIS用のweb.configがおいてある。このリライト用urlを/hogeからに書き換える
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Exclude direct access to webroot/*"
stopProcessing="true">
<match url="^/hoge/webroot/(.*)$" ignoreCase="false" />
<action type="None" />
</rule>
<rule name="Rewrite routed access to assets(img, css, files, js, favicon)"
stopProcessing="true">
<match url="^(img|css|files|js|favicon.ico)(.*)$" />
<action type="Rewrite" url="/hoge/webroot/{R:1}{R:2}"
appendQueryString="false" />
</rule>
<rule name="Rewrite requested file/folder to index.php"
stopProcessing="true">
<match url="^(.*)$" ignoreCase="false" />
<action type="Rewrite" url="/hoge/index.php"
appendQueryString="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
書き込み権限の付与
hoge/tmp
hoge/logs
にIIS_IUSRSの書き込み権限を与えておく。
ここまでをチェック
http://localhost/hoge
でCakePHPのテストページが見えることを確認。
データベースはまだ警告が出ている。
DBの設定
先にSQLサーバ認証でユーザとDBは作っておく。
config/app.phpのDBの設定に(220行目あたり)をMysql用の記述から下記に変えておく。
自分はSQLExpressなのでホスト名に\sqlexpressが入っている。
"schema"を設定しないと、チェックは通るがbakeで
"it has 0 columns"とかいわれてがっかりする。
'Datasources' => [
'default' => [
'className' => 'Cake\Database\Connection',
'driver' => 'Cake\Database\Driver\Sqlserver',
'persistent' => false,
'host' => 'localhost\sqlexpress',
'username' => 'hoge_admin',
'password' => 'hogehoge',
'database' => 'fuga',
'schema' => 'dbo',
再度チェック
でCakePHPの赤いトップページと、チェック項目が全てクリアになっていたらOK。