Posted by hattara on 2009 年 4 月 27 日 – 8:16 PM
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”
この辺を全部対応して、どうにか動くようになりました。
Posted by hattara on 2009 年 3 月 9 日 – 9:06 PM
.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のおすすめ書籍
Posted by hattara on 2008 年 11 月 5 日 – 7:58 PM
よく.htaccessを使うわけだけども、その都度書き方をググるわけです。
面倒なんで、メモで残しておきます。
まず、特定ホストからのみアクセスを許可するなら、
order deny,allow
deny from all
allow from 192.168.0.100
allow from 192.168.0.200
みたいな感じにすれば、OKですね。
次に、mod_rewriteで転送する場合ですが、アクセスホスト名毎に
内容を分岐する(VirtualHostとか使ってない場合?)とか、
コンテンツ内容によって変更する場合には、以下のような書き方でいけますね。
## シンボリックリンクを有効に(場合によって不要かも)
Options FollowSymLinks
## リライトのエンジンを有効に。
RewriteEngine on
## サイト名A宛でtest.phpでもtest/フォルダでもなければmainフォルダに転送
RewriteCond %{HTTP_HOST} a.com
RewriteCond %{REQUEST_URI} !(^/test\.php)
RewriteCond %{REQUEST_URI} !(^/test/)
RewriteRule ^(.*)$ /main/ [R]
## サイトB宛で/aaa/abc.php宛のものを defフォルダに転送
RewriteCond %{HTTP_HOST} b.com
RewriteCond %{REQUEST_URI} (^/aaa/abc.php)
RewriteRule ^(.*)$ /def/ [R]
というような感じでできますね。
あとは、これをもとの修正をいれてあげればいい感じ。
条件とか不要な場合には、Redirectを使えばいいですね。