ハトネコエ Web がくしゅうちょう

プログラミングやサーバー・Web制作、チームマネジメントなど得た技術のまとめ

PHP + cakePHP 導入メモ(Mac)

PHP をローカルサーバーで動かす

参考 : MacでApache+PHPの環境を構築する

なお、設定データをいろいろいじるので、
いじるファイルについてはバックアップを残しておくと良い。あとあと安心。

Apache起動

sudo /usr/sbin/apachectl start

httpd.conf いじる

sudo emacs /etc/apache2/httpd.conf

以下がコメントアウトされてたら、先頭の # を削除

LoadModule php5_module libexec/apache2/libphp5.so  ## php を有効化
Include /private/etc/apache2/extra/httpd-vhosts.conf  ## バーチャルホストを有効化
LoadModule rewrite_module modules/mod_rewrite.so  ## cakePHP が動けるように

最後のひとつは、
cakePHPのためである。(参考 : CakePHPをインストールするときのApacheの設定

ローカルドメイン名設定

sudo emacs /etc/hosts
127.0.0.1   localhost
255.255.255.255 broadcasthost
::1             localhost

と書かれていた。以下の一行を追加。

127.0.0.1 local.web

ドメインの名前はわかりやすいものならなんでも良い。

バーチャルホストの設定

sudo emacs /etc/apache2/extra/httpd-vhosts.conf

ごちゃごちゃダミーデータが書かれていたが削除した。
私は以下のように記載した。

<VirtualHost *:80>
    DocumentRoot "/Users/nekonenene/Programs/web"
    ServerName web.local
    ErrorLog "/private/var/log/apache2/sandbox-error_log"
    CustomLog "/private/var/log/apache2/sandbox-access_log" common
    DirectoryIndex index.php index.html

    <Directory "/">
        Options Indexes Includes ExecCGI FollowSymLinks
        AllowOverride All    
        order deny,allow
        Allow from All
    </Directory>
</VirtualHost>

DocumentRoot について、~/Programs/web などと書くと認識されないので注意。
めんどうだがチルダを使わずに絶対パスで書く。

ふつうのウェブサイトの場合は Options に Indexes は書かないが、
(むしろ無効にするため -Indexes と書くのが普通だが)
ローカル環境で自分しか見ないからそんな気にする必要はないし、ファイル一覧が見られたほうが楽なのでこうした。

f:id:nekonenene:20160401002146p:plain

なお、逆にこの設定をしていない場合、ディレクトリにアクセスしようとして、そこに index.html がない場合は
403 Forbidden が表示されるので注意。

Apache を再起動

sudo /usr/sbin/apachectl restart

設定データが反映される。

cakePHP のインストール

参考 : インストール - 3.6

下記の chphp を使っている場合は、chphp system で一度システム標準のPHPにしておいた方がいい。
openssl との連携ミスでひっかかったので。

composer.phar の取得

curl -s https://getcomposer.org/installer | php

テンプレートパッケージの生成

先ほどの composer.phar を使いテンプレートを生成。

php composer.phar create-project --prefer-dist cakephp/app a_cake_php

途中でエラーメッセージ。

- cakephp/cakephp 3.2.6 requires ext-intl * -> the requested PHP extension intl is missing from your system.

PHP の拡張の intl というものが無いらしいので、

brew install homebrew/php/php55-intl

ののちにシェルを再起動。

今度は最後までパッケージの展開がおこなわれ、
a_cake_php ディレクトリにすべて展開された。

cakePHP ローカルサーバーの起動

a_cake_php ディレクトリに移動し、

bin/cake server

f:id:nekonenene:20160401010340p:plain

表示されている通り、 http://localhost:8765/ にローカルサーバーが立ち上がったか確認。
ウェブブラウザでアクセスすると、以下のようなページを見ることが出来る。

f:id:nekonenene:20160401010512p:plain

これは a_cake_php フォルダーの webroot/index.php の内容である。


ここまでやったところで、
「これ前半と後半の内容、関連してないのでは……」と気付き始めたけれど、そういうこともあるよね!!

cakePHP の環境設定ができて、最初の一歩を踏み出せました。


=== 追記 : 2016/02/01 19:00 ===

ローカルサーバーから cakePHP フォルダーを見る

前半で作った local.web から a_cake_php ディレクトリが見られない問題の解消

php.ini の用意

/etc/php.ini.default の中身をコピーした php.ini を作成

sudo cp /etc/php.ini.default /etc/php.ini

intl.so の有効化

intl.so を入れた場所を調べ、そのPATHを php.ini に記入する。
なお、先ほどのbrew install php55-intlで入れた場所は

brew info php55-intl

で確認できる。

sudo emacs /etc/php.ini

私の場合は以下の1行を書き足した。

extension=/usr/local/Cellar/php55-intl/5.5.33/intl.so

MySQL のインストールやら

他に MySQL のインストールやら (参考 : HomebrewでMySQLをインストールする時に知っておきたいこと | Macとかの雑記帳
Apache の再起動やらいろいろしてたらアクセスできるようになった。

# Apache の再起動コマンド(Mac)
sudo httpd -k restart

tmp, logs のアクセス権の変更

CakePHPのチュートリアルに書かれている通りに、
a_cake_php ディレクトリ内の tmp フォルダと logs フォルダのアクセス権を変更。

chown -R `whoami` tmp
chown -R `whoami` logs
chmod -R 777 tmp
chmod -R 777 logs

途中で permission denied されたなら、例えばユーザー名がnekoneneneならsudo -R nekonenene logsというふうにコマンド。

いろいろしてたから自信はないけれど、おそらく以上のことをすれば、
前半で構築した local.web から cakePHP のプロジェクトディレクトリが見られるようになっていると思われる。
いちおう、他にやっていたいろいろも以下に書いておく。

mysqlnd_ms.so の有効化

brew install php55-mysqlnd_ms

php.ini に書き足す

extension=/usr/local/Cellar/php55-mysqlnd_ms/1.5.2/mysqlnd_ms.so

pdo-dblib.so , pdo-pgsql.so の有効化

これはきっと関係ない。

brew install php55-pdo-dblib php55-pdo-pgsql

php.ini に書き足す

extension=/usr/local/Cellar/php55-pdo-pgsql/5.5.33/pdo_pgsql.so
extension=/usr/local/Cellar/php55-pdo-dblib/5.5.33/pdo_dblib.so

=== 追記ここまで ===

続き
nekonenene.hatenablog.com