« AmazonアソシエイトWebサービスがまたも名称変更、「Product Advertising API」に | トップページ | AmazonのProduct Advertising APIは多くのツールを滅亡させてしまうのではないか? »

2009年5月11日 (月曜日)

PHP 4から5移行、XSLTではまる話

 PHP4ではXSLT処理にSablotronを利用していた。レンタルサーバーを変えてPHP5になったときも、PHP4互換機能でごまかしていた。しかし、いつまでもこんな状態じゃまずいと思い、PHP5への移行をやっと実行に移す。

 テスト環境はローカルネットワークのサーバー上で行っていたのだが、今回はWindowsマシンにXAMPP環境を用意した。まず最初のはまりはこれ。

 最初は、XAMPPのApacheにアクセスできない。これはPort:80を使うSkypeが起動してるのがだめ。Skypeを終了したら、OK。じゃあ、次。

 XAMPPはPHP4とPHP5を切り替えられる。ということなので、テスト環境にはばっちりのはず。
 しかし、XAMPPフォルダにはphp-switch.batという切り替え用のバッチファイルが見当たらない。

 調べてみると、最新のXAMPPにはPHP4環境がないのだという。PHP4は開発もメンテも終わっているので、切り捨てられたようだ。これに気づくまで数十分。ということで、前のバージョンを落とす。version 1.6.8。

 次。

 PHP5のXSLTプロセッサを利用するのはカンタンだった。
 移行期、ということで、とりあえず、PHP4でもPHP5でも動くように、バージョンを判断して分岐するようにしてみた。PHP4だったらSablotoron、PHP5なら標準のXSL関数を利用するといった具合。

 しかし。PHP4で使っていたコードでエラーが出る。XAMPPをPHP4で起動してもだめなのだ。エラーはこんな感じ。

Warning: Sablotron error on line 1: XML parser error 4: not well-formed (invalid token) in /**/***/**.php on line 7 Sorry, sample.xml could not be transformed by sample.xsl into and the error code is 2 the $result variable the reason is that XML parser error 4: not well-formed (invalid token)1
ファイル名とかは行番号とかは例ということで。

 テスト用のサーバーでは問題なく動いていたコードさえ、エラーが出ていることに気づく。あれ?
 ここで数時間。

 エラーコードとかメッセージでいろいろ検索しても出てこない。ということで、あらためて、公式のドキュメントを読む。答えはそこにあった。

 Windowsではパスの前に「file://」をつける必要がある。

 そんなカンタンなことだったとは! 
 エラーメッセージから、XSLファイルをえんえんチェックしてしまった。考えてみれば、PHP5で動くし、別のサーバーでPHP4で動いてたので、それをチェックしたってしょうがないのだった。 

 XAMPPのPHP側でそのへん吸収してくれないもんか。とか思った。メモ。


|

« AmazonアソシエイトWebサービスがまたも名称変更、「Product Advertising API」に | トップページ | AmazonのProduct Advertising APIは多くのツールを滅亡させてしまうのではないか? »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/35726/44981782

この記事へのトラックバック一覧です: PHP 4から5移行、XSLTではまる話:

« AmazonアソシエイトWebサービスがまたも名称変更、「Product Advertising API」に | トップページ | AmazonのProduct Advertising APIは多くのツールを滅亡させてしまうのではないか? »