CakePHP2.xの環境構築 エラーと対応メモ
CakePHP2.xの環境構築が必要だったのでやりました。多少のハマりがあったので、念のため次回に備えてエラー等のハマった箇所と対応をメモします。
ドキュメント
この記事を読んでいる人はだいたい今からCakePHP2.xの環境構築をしようとしている人だと思いますが、公式のドキュメントが整っているので、本記事のような有象無象のブログを漁る前にこっちを読んでから分からない部分をググるべきだと思います。書いといてなんですが。
状況
- 「CakePHP(バージョン不明)の既存システムの改修」という案件の依頼を受けて開発環境を構築
- gitからソース一式をそのままxamppのhtdocsにクローン
- そのままだと色々エラーを吐くので諸々調整
やったこと
バージョンの確認
バージョン情報はVERSION.txtというファイルに記載されています。メジャーバージョンごとにファイルの位置が異なるので、以下を参考にVERSION.txtを探し出して確認。
- Cake3系
/vendor/cakephp/cakephp/VERSION.txt
- Cake2系
/lib/Cake/VERSION.txt
- Cake1系
/cake/VERSION.txt
2.3.2でした(数字の存在感が無さすぎて、最初気付かずに「書いてないじゃん!」と悩んだ)。
オリジナルをDLして初期状態を確認する
正式な状態ではどうなっているのかを確認するため、ゼロからCakePHP2.3.2環境を立ち上げてみます。CakePHPの公式(https://cakephp.org/)では3.X系しか置いてないようで、2.X系以下はgithubから入手します。以下から目当てのCakePHP2.3.2を探し出してダウンロード。 Tags · cakephp/cakephp · GitHub
以下の記事など参考に、とりあえずまっさらのCakePHP2プロジェクトを立ち上げた。 CakePHP2を学ぼう!優しいCakePHP超入門!スクリーンショット多め – WebCake
不要ファイルの削除
上記で立ち上げたcakeのフォルダと、gitからクローンしてきたフォルダを比較して確認。
- 不足しているファイルがないか?
- .gitignoreを確認して、本来無視されるべきファイルが共有されていないか?
今回はキャッシュファイルが共有されていてエラーになっていたので、ファイルを削除。
memo
.gitignoreは、指定したファイルやディレクトリをgitの管理対象外にすることができる。一時的にキャッシュされるファイルとか、OSで生成されるファイルとかは各々の開発環境の設定とかによって異なるので、.gitignoreに記載して無視する。今回は、他の開発者のキャッシュを含むファイルごとクローンしていたため、パスが通らずエラーを吐いていた。
エラーの対応(パーミッション)
Warning: _cake_core_ cache was unable to write 'cake_dev_ja' ...
Warning: example/app/tmp/cache/persistent/ is not writable ...
上記のようなエラーが出たのでエラーメッセージでググって対応を調べる。
パーミッションエラーとのことなので、/app/tmp
以下のフォルダで右クリック→プロパティ→セキュリティのタブ→ユーザーを選択→編集 から「フルコントロール」の許可にチェックを入れるとパスが通った。
公式ドキュメントのパーミッションの項目に該当する作業。
サイトのルート環境に設定する
現状ではhttp://localhost/cake
みたいなパスでアクセスするが、それだとうまく動作しない部分があったので以下を参考にhttp://localhost:8080
とルートで表示できるようにすると正常に動作した(公式ドキュメントの設定以下の項目に該当する作業)。
xamppでローカル作業環境構築 | アライドアーキテクツのクリエイターブログ
運用(Production)と同様に/app/webroot
をルートに指定した。
Listen 80
Listen 8080
NameVirtualHost *:80
NameVirtualHost *:8080
<VirtualHost *:80>
DocumentRoot "D:/xampp/htdocs"
ServerName localhost
</VirtualHost>
<VirtualHost *:8080>
DocumentRoot "D:/xampp/htdocs/example.com/app/webroot"
ServerName localhost
</VirtualHost>
余談
よくある初心者向きのプログラム言語とは何ぞや論争において、自分は「開発環境の構築が不要or容易な言語でとりあえず動く体験をするのが良い派」なので、一方で存在する「開発環境の構築経験から学べる言語が良いよ派」には若干懐疑的でした。しかし今回みたいなことをしていると、仕事でプログラミングをやっていく上では初めましての開発環境もなんかノリで構築出来るようにしておくのは必要だなという風にも感じるところです。
ともあれ、きょうびCakePHP2.x系で開発する機会は少ないかもしれませんが、今回のように既存プロジェクトの案件であれば必要なこともあるのかなと思うので、本メモ書きが役に立つ機会があれば幸いです。では。