LoginSignup
4
7

More than 5 years have passed since last update.

Windows 10 + IIS + PHP 7+CakePHP 3+MSSQLを、サブディレクトリに入れて使う

Last updated at Posted at 2017-06-26

この組み合わせの記事がなかなか探せず、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からに書き換える

web.config
<?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。

4
7
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
4
7