PHP + cakePHP 導入メモ(Mac)
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 と書くのが普通だが)
ローカル環境で自分しか見ないからそんな気にする必要はないし、ファイル一覧が見られたほうが楽なのでこうした。
なお、逆にこの設定をしていない場合、ディレクトリにアクセスしようとして、そこに index.html がない場合は
403 Forbidden が表示されるので注意。
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
ののちにシェルを再起動。
ローカルサーバーから cakePHP フォルダーを見る
前半で作った local.web から a_cake_php ディレクトリが見られない問題の解消
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