ColdfusionでPHP/Ruby!
Coldfusionがスタンドアロンモードで動作するようになったので、Sean corfieldが昨年6月に公開したブログ記事「ColdFusion 8 running PHP and Ruby!」を試してみることにした。
どうしてColdfusion8でPHPやRubyが利用できるようになったかというと、①Java6でマルチスクリプトがサポートされた(JSR-223)、②Caucho社がJava6対応オープンソースPHPスクリプトエンジンQuercusをリリースしたことによるようです。
ダウンロード先は、Scripting for ColdFusion 8 になります。詳細は、RIAForgeも参照してください。
なお、Coldfusion用PHPエンジンのインストール方法は以下のとおりです。
- ダウンロードファイルを解凍する。
- cfphpディレクトリ内のlib/quercus.jar と lib/resin-util.jar を coldfusion8/lib (スタンドアローン版) もしくは WEB-INF/cfusion/lib/ (マルチサーバ版) にコピーする。
- php.cfmをカスタムタグに登録する。
- Coldfusionを再起動する。
また、Resin版Railo用PHPエンジンのインストール方法は、以下のとおりです。
- ダウンロードファイルを解凍する。
- resin-util.jarとquercus.jarは、Resinにインストール済のためコピー不要。
- php.cfmをカスタムタグに登録する。
- Railoを再起動する。
Seanのブログでの使用例は、以下のとおりです。
<cfset who = "Sean" />
<cf_php>
<?php
echo "Hello ".$_COLDFUSION["who"]."<br />";
$_COLDFUSION["greeting"] = "wibble";
?>
</cf_php>
<cfoutput>greeting = #greeting#</cfoutput>
ポイントは、.$_COLDFUSION[]。
これを使って、Coldfusion -> PHP、PHP -> Coldfusion 間でデータをやりとりするようです。
サンプルアプリケーションをテストした際に表示ページのドキュメントを読むと、$_COLDFUSION["bar"]によるvariable変数の他に、$_SESSION["foo"]を使用してsessionスコープ変数もやりとりできるようです。
また、Railoでは、エラーが発生するようです。
Railo 3.0.1.000 Error (Com.caucho.quercus.quercuserrorexception) Message 'railo.runtime.type.scope.CallerImpl' class definition not found Stacktrace The Error Occurred in
C:\xampp\htdocs\testScripts\cfphp\customtags\php.cfm: line 89
87: <cfset engine.getContext().setWriter(writer) />
88:
89: <cfset code.eval() />
90:
91: <!--- extract the PHP output buffer: --->called fromC:\xampp\htdocs\testScripts\cfphp\example.cfm: line 60
58: <cfset who = "Sean" />
59: <cftimer label="Executing PHP" type="outline">
60: <script:php>
61: <!--- read a variable from ColdFusion: --->
62: Hello <?= $_COLDFUSION["who"] ?><br />called fromC:\xampp\htdocs\testScripts\cfphp\customtags\php.cfm: line 89
87: <cfset engine.getContext().setWriter(writer) />
88:
89: <cfset code.eval() />
90:
91: <!--- extract the PHP output buffer: --->called fromC:\xampp\htdocs\testScripts\cfphp\example.cfm: line 60
C:\xampp\htdocs\testScripts\cfphp\customtags\php.cfm: line 89
called fromC:\xampp\htdocs\testScripts\cfphp\example.cfm: line 60
コメント