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 5 years have passed since last update.

Windows+Apache+CakePHP3 環境構築

Last updated at Posted at 2016-10-28

Windows+Apache+CakePHP3 環境構築

環境

  • Windows Server 2016 64bit ja
  • Apache 2.4.23
  • PHP 7.0.12
  • PostgreSQL 9.6.0

サーバ構築

Apache

参考
http://www.adminweb.jp/apache/

Apache LoungeからWindows版Apacheを入手する。
https://www.apachelounge.com/

Apacheバージョンに合ったVisual C++ 再頒布可能パッケージをインストールする。

Apache24を解凍し、C直下に配置する。

必要ならhttpd.confのServerRoot, DocumentRoot, ServerName等を環境に合わせて書き換える。

必要なら使用するポートを変更する。

httpd.conf
Listen 80

サービスに登録して起動する。
コマンドプロンプトでhttpd.exeがあるディレクトリで以下のコマンドを実行。

httpd -k install
httpd -k start

外部からアクセスする場合、80番ポートを開放する。
http://symfoware.blog68.fc2.com/blog-entry-1231.html

Windowsが64bitの場合、Apacheのバグでサーバー不調になる可能性がある。
あらかじめ以下の作業を行っておいた方がよい。
http://toshy7302104.cocolog-nifty.com/soliloquist/2015/10/apache-win64-c7.html
https://ah-2.com/2015/07/30/apache_win_not_respond.html

PHP

PHPディレクトリをC直下に配置する。

モジュール追加する。

httpd.confのDSOセクション
LoadModule php7_module c:/php/php7apache2_4.dll

拡張子を登録する。

http.confの最後
<FilesMatch "\.php$">
  AddHandler php7-script .php
  AddType application/x-httpd-php .php
</FilesMatch>

php.iniの場所を指定する。
php.ini-development または php.ini-production をコピーして php.ini にリネームする。

http.confの最後に
PHPIniDir "c:/php"

拡張モジュールのディレクトリ設定

php.ini
extension_dir = "c:\php\ext"

タイムゾーンの設定

php.ini
date.timezone = Asia/Tokyo

Windowsのシステム環境変数PathにPHPの場所を追加する。

Apacheを再起動する。

PostgreSQL

参考
http://lets.postgresql.jp/documents/tutorial/windows/
インストーラからインストールする。

  • Port: 5432
  • Locale: C
php.ini
extension=php_pdo_pgsql.dll

デフォルトでは postgres というDBができている。
必要に応じてユーザ、DBを作成しておく。

さらにデフォルトではローカルからしかDBにアクセスできないので、外部からアクセスするなら以下の設定を行う。
http://qiita.com/seagal18/items/23977bd5d49c140f83ea

CakePHP3導入

前準備

Apache
mod_rewriteを有効化

httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so

.htacessの設定

httpd.conf
<Directory "c:/Apache24/htdocs">
~~~
</Directory>

この下に追記

<Directory "C:/Apache24/htdocs/cakephp(プロジェクト名)">
    Options FollowSymLinks
    AllowOverride All
</Directory>

PHP
mbstringを有効化

php.ini
extension=php_mbstring.dll
php.ini
[mbstring]
mbstring.language = Japanese
mbstring.encoding_translation = Off
mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII
mbstring.substitute_character = none
mbstring.func_overload = 0

intlを有効化

php.ini
extension=php_intl.dll
php.ini
intl.default_locale = en_utf8
intl.error_level = E_WARNING

openSSLを有効化

php.ini
extension=php_openssl.dll

Composer
インストーラでインストールしてサーバ再起動。

セットアップ

プロジェクト作成
コマンドプロンプトでC:\Apache24\htdocsに移動し、以下のコマンドを実行する。

composer create-project --prefer-dist cakephp/app cakephp(プロジェクト名)

http://localhost/cakephp/ にアクセスしてCakeの画面が出るか確認する。
この時点ではデータベースにバツマークがついているはず。

PostgreSQL接続

cakephp\config\app.php
'Datasources' => [
    'default' => [
        'className' => 'Cake\Database\Connection',
        'driver' => 'Cake\Database\Driver\Postgres',
        'persistent' => false,
        'host' => 'localhost',
        //'port' => 'non_standard_port_number',
        'username' => 'ユーザー名',
        'password' => 'パスワード',
        'database' => 'DB名',
        'encoding' => 'utf8',
        'timezone' => 'UTC',
        'flags' => [],
        'cacheMetadata' => true,
        'log' => false,
        'quoteIdentifiers' => false,
        //'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'],

        'url' => env('DATABASE_URL', null),
    ],
]

上記バツマークが消えることを確認する。

検索プラグイン FriendOfCake/search
https://github.com/FriendsOfCake/search

Conposerを使ってインストールする。
コマンドプロンプトで以下のコマンドを実行。

cakephp
composer require friendsofcake/search

プラグインのロード

cakephp\bin
cake plugin load Search
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?