Category Archives: Zend Framework

nginxでZend Framework(rewrite)を利用する

0
Filed under nginx, php, WebServer, Zend Framework, 未分類

nginx + php-fpm + pecl-apcで構築されたサーバでZend Frameworkを利用する際に、
.htaccessが使えないことで以下のような記述ができませんでした。

## リライトエンジンを有効に。
RewriteEngine On

## リライトの対象パスを指定
RewriteBase /

## リライトルールを宣言(画像、CSS、Javascript)以外をindex.phpに転送する。
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php

通常の Apache の場合などには、.htaccessで上記のように表現できますが、
nginxでは、現状各ユーザ毎のフォルダに設置して対応する方法がないようです。

具体的にいうと、nginx.confでincludeをサポートしているので、
各ユーザ領域に設定ファイルの断片をおいて、includeさせることまではできると思われますが、
そこを修正しても、読み込み直さないと反映されないので、意味がないという事になります。

よって、対策としては、容易に設定修正できないという難点は致し方ないとして、
/etc/nginx/nginx.conf(ファイルパスは環境により異なります。)、
または、includeしている /etc/nginx/conf.d/***.confの中の該当のドメイン設定部分に
以下のように追記します。

server {
listen 80;
server_name test.example.com ;
location / {
root /home/Web;
index index.php index.cgi index.html index.htm;
rewrite ([^(js|ico|gif|jpg|png|css)])$ index.php;
}
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/Webdir/hattara.info/main/web/$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
}

これでとりあえず動くようになります。
現状だと、逆にいえばこれしかできないような気もする。。

.htaccessみたいに外部で設定できるようにできたり、rewriteの設定がもう少しわかりやすいといいなぁと思うけど、
これが速度とのトレードオフなのかもしれないですね。

ということで、rewriteとかの設定で、超はまりまくったけど、今日はこの辺で。

Nginx Http Server

新品価格
¥3,964から
(2010/12/20 19:36時点)

PHP Fatal error: Class ‘DOMDocument’ not foundに悩まされ

0
Filed under php, Zend Framework

昨日から以下のようなエラーに頭を抱えていました。

PHP Warning: Zend_Loader::include_once(DOMDocument.php) [function.Zend-Loader-include-once]: failed to open stream: No such file or directory in /home/…./ZendFramework/library/Zend/Loader.php on line 146

PHP Warning: Zend_Loader::include_once() [function.include]: Failed opening ‘DOMDocument.php’ for inclusion (include_path=’../app/framework/ZendFramework/library:../app/modules/default/models:.:/usr/share/pear:/usr/share/php’) in /home/…./ZendFramework/library/Zend/Loader.php on line 146

PHP Fatal error: Class ‘DOMDocument’ not found in /home/…./ZendFramework/library/Zend/Feed.php on line 195

Zend_Loader(Zend_Loader.php)というかZend_Loader_Autoloader(Zend/Loader/Autoloader.php)の問題かと思っていたが、
全然関係ないところでエラーになっているのがわかりました。

ただただ、Zend_FeedとかZend_Feed_RssとかでFeed処理をしたかっただけなのだが、これがでてた。

原因としては、至極簡単で、php自体をrpmというかyumで入れたわけですが、
xmlというかdomというかを扱うためのパッケージが足りなかったという事です。

以下の手順で復旧(利用できるように)できました。

※XML用のモジュールをインストールする
yum install php-xml

※読み込み元のApacheを再起動する。
/etc/rc.d/init.d/httpd stop
/etc/rc.d/init.d/httpd start

ということでした。
tar.gzのアーカイブからコンパイルとかしてる人は、
たぶん –with-dom とかでいけるんじゃないですかね。

ZendFrameworkのおすすめ書籍


Zend_Loader::registerAutoloadは賞味期限切れ

0
Filed under php, Zend Framework

今Zend_Frameworkの1.10.2を利用しているわけですが、
Zend_Loader::registerAutoload使ってたら、
以下のようなNoticeなるエラーというかアナウンスというか警告というか出たわけです。

PHP Notice: Zend_Loader::Zend_Loader::registerAutoload is deprecated as of 1.8.0 and will be removed with 2.0.0; use Zend_Loader_Autoloader instead in /home/Userdir/hattara.info/sub/api/app/framework/ZendFramework/library/Zend/Loader.php on line 258

ようするに何がいいたいかというと、Versionが2.0.0になったら消すから、
Zend_Loader::registerAutoload はやめて、
Zend_Loader_Autoloader を使ってねとおっしゃってるようだ。

なので、以下にのせかえてみた。

require_once ‘Zend/Loader.php’;
Zend_Loader::registerAutoload();

require_once ‘Zend/Loader/Autoloader.php’;
$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->setFallbackAutoloader(true);

とりあえずこれで、エラーはでなくなりましたとさ。

ZendFrameworkのおすすめ書籍


Zend_Config_Iniで画面が真っ白に。

0
Filed under php, Zend Framework

初歩的なことなんだと思うんですが、
Zend_Config_Iniでiniを読み込ませたときに、画面が真っ白(ホワイトアウト?)に
なっちゃったわけですよ。

色々テストしてみた結果、読み込み側じゃなく、
読み込まれるIniファイルに問題があったわけですよ。

【誤】

test = ‘test’

【正】

test = “test”

ようするにシングルクウォート(シングルコート)ではダメで、
ダブルクウォート(ダブルコート)では大丈夫ということです。

本当にそういうことなのかどうかはわからんが、parse_ini_fileの説明に
「ini ファイル上の値に英数字ではないものがある場合、 ダブルクォート(“)で囲う必要があります。 」
とあるので、ダブルコートのみOKなんでしょうね。

そうなんでしょうね。

最近こんなんばっかりです。

ZendFrameworkのおすすめ書籍


XMLを表示できない。

0
Filed under .htaccess, php, Zend Framework
Tagged as , , ,

ZendFrameworkの勉強と称して、PHPからXMLを表示しようとしてたわけですが、
XML表示ができずに、以下のようなエラーが出てました。

XML パースエラー: タグの対応が間違っています。終了タグが必要です:

URL: http://zend.hattara.info/Response/
行番号: 11, 列番号: 3:

–^

色々周りの方に確認してもらったりしたら、間違いがボロボロと。。。

  • ZendFrameworkでは、Controller部分には、phpの閉じかっこ「 ?> 」は記載しないらしい
  • XMLを表示する際には、タグの中はシングルクォートではなく、ダブルクォートを利用するらしい
  • 」は「」と競合するので、short_open_tagはOffにする必要があるらしい
  • charsetをUTF-8にしてるのに、ソースをEUCで記載してたので出たらしい

というあたりがありました。
なので、.htaccessで以下を追加したり各内容を修正したりしました。

php_value short_open_tag “Off”

この辺を全部対応して、どうにか動くようになりました。

ZendFrameworkで404エラー

0
Filed under .htaccess, Apache, php, Zend Framework
Tagged as ,

.htaccessでmod_rewriteを使って転送してるつもりが、
404エラーになってしまう。

Apacheのエラーログ(error_log)では、「File does not exist:」が
でてる状態なわけです。

こんな現象とちょっと戯れたので、メモしとく。

.htaccessの内容は以下。

## リライトエンジンを有効に。

RewriteEngine On

## リライトの対象パスを指定

RewriteBase /

## リライトルールを宣言(条件・アクセス先)

RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php

まあ、これで普通はmod_rewriteによって、該当領域にきたアクセスで
RewriteRuleで指定されている画像など以外のものは、
すべてindex.phpにアクセスされるようになるはずなんですね。

ここで大きな落とし穴がありました。
.htaccessの書き方が問題なくても、
そもそも.htaccessを有効にしてない場合があるわけです。

Apacheのhttpd.confに「AllowOverride」って項目があるわけです。
これが「None」とかになってると、.htaccessが利用できないです。

これは、サーバ管理者にお願いする形になっちゃうんでしょうけど、
修正するしかないですね。

ZendFrameworkのおすすめ書籍


ZendFrameworkでViewがないとエラーになりますよ。

8
Filed under php, Zend Framework
Tagged as

Hello Worldみたいな単純な表示すらでなかったら、ショックをうけますね。

ということで、ZendFrameworkで以下のエラーがでたので、
一応コメントを残しておく。

エラーは、Apacheのerror_logに出力されてました。
標準出力的には、まっ白い画面でした。

PHP Fatal error: Uncaught exception ‘Zend_Controller_Dispatcher_Exception’ with message ‘Invalid controller specified (error)’ in /usr/share/pear/Zend/Controller/Dispatcher/Standard.php:249\nStack trace:\n#0 /usr/share/pear/Zend/Controller/Front.php(914): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))\n#1 /public_htmlまでのPATH/index.php(14): Zend_Controller_Front->dispatch()\n#2 {main}\n thrown in /usr/share/pear/Zend/Controller/Dispatcher/Standard.php on line 249

【原因】
該当のControllerに対応したViewが存在しない場合などに表示されるようです。
他にも要因はあるんだろうけど、今回はこれでした。

/(APP用フォルダ)/controllers/IndexController.php (indexActionだったら)

が利用されている場合には、以下のViewを呼びにいくわけです。

/(APP用フォルダ)/views/scripts/index/index.phtml

要するに、
/(APP用フォルダ)/views/scripts までは固定で
index が Controllerの名前と紐づき、
index.phtml がActionの名前と紐づくわけですね。

まあ、僕のは、scriptsフォルダがなかったわけですが・・・・
初歩の初歩。 間違いとしては、下の下ですね。

※自動でレンダリング?しないようにしている場合には、大丈夫だと思う。

ZendFrameworkのおすすめ書籍


pearでSmarty & ZendFrameworkインストールする。

10
Filed under php, Smarty, Zend Framework
Tagged as , , ,

もともとSmartyは使ってたんですが、
Zend Frameworkも勉強を始めました。

ということで、面倒なくインストールする方法を書いておきます。
やっぱりphpまわりは、pearでインストールできると楽ですよね。

ということで、SmartyとZend Frameworkのpearでの設置方法です。

## Smarty

pear list
pear list-channels
pear channel-discover pearified.com
pear install pearified/Smarty
pear list-channels
pear list

## Zend Framework

pear list-channels
pear channel-discover zend.googlecode.com/svn
pear install zend/zend
pear list-channels

ただ、これをやっても、pear list で一覧に出てきません。。
どうしたらいいんでしょうね。。

この辺は、また何かわかったら、追記することにします。

ZendFrameworkのおすすめ書籍