MAMP環境でのZend Framework初期設定でつまずいた事
MAMP環境にて、Zend Frameworkの初期設定でつまずいた事があったので、どなたかの為になればとメモしておきます。
最近は気分転換に、空き時間を活用してMackBook Air(Leopard)上でMAMPを動かし、スクリプトを書いています。
今学習しようとしているのはZend Framework。
デファクトスタンダードが存在しないPHPのフレームワークの中で、
今後はやりそうな気がしたため、勉強しようと思った次第です。
今回つまずいたのは2点。
(もしかしたら、「何をこんな当たり前の事を。。」ということだったりするのかもしれませんが、なにぶんこの環境(Mac)での開発になれていないので^^;;)
1つ目は、Zend Frameworkにかかせない mod_rewriteの設定。
本の通り、.htaccessに下記のように書いたのですが、動いている気配がありません。。
RewriteEngine On
RewriteBase /zend/public_html/
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php
RewriteBaseがおかしいのかなぁと思って
いろいろやってみたのですが全くダメ。
試行錯誤した結果、.htaccessの改行コードがCR(OSX以前のMacの改行コード)だったのがいけなかったようです。
LF(UNIXの改行コード)にしたらすんなり動きました。
(エディタの初期改行コードがCRだったのでなかなか気がつきませんでした)
mode_rewriteは仕事で何度も使った事があったので大丈夫!
と思っていたのですが、全然そんな事はなく、今回勉強になりました。
次の関門はもっと苦労しました(^^;
順調に設定が進み、
普通にIndexControllerにindexActionを作成して動いたのですが、
存在しないコントローラにアクセスした時に動作するはずの
ErrorControllerが機能しません。
具体的には、存在しないコントローラにアクセスした際、下記のようなメッセージが表示されます。
(http://localhost/zend/public_html/a にアクセスした場合
※public_html/下に.htaccessを置いています)
Fatal error: Uncaught exception ‘Zend_Controller_Dispatcher_Exception’ with message ‘Invalid controller specified (a)’ in /Applications/MAMP/bin/php5/lib/php/Zend/Controller/Dispatcher/Standard.php:249 Stack trace: #0 /Applications/MAMP/bin/php5/lib/php/Zend/Controller/Front.php(914): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #1 /Applications/MAMP/bin/php5/lib/php/Zend/Controller/Front.php(223): Zend_Controller_Front->dispatch() #2 /Applications/MAMP/htdocs/zend/public_html/index.php(4): Zend_Controller_Front::run(‘../application/…’) #3 {main} thrown in /Applications/MAMP/bin/php5/lib/php/Zend/Controller/Dispatcher/Standard.php on line 249
なんでErrorControllerが呼び出されないの?
と思いながら、いろいろ試行錯誤。
それでもまったくダメだったので、
試しにWindowsサーバにディレクトリごとコピーして実行してみたら
すんなりErrorControllerが呼び出されました。
???
つまりスクリプトやディレクトリ構造は問題無いって事は、
このMacの環境のせいっぽいです。
その後いろいろいじった結果、ついに犯人が見つかりました。
犯人はeAcceleratorです。
MAMPの環境設定からeAcceleratorを外したらあっけなく動きました。
これってたしか初期設定でONだったのかな?
まぁ動いたのでよしとします!