JavaScriptとPHPを連携させて遊んでみる

内容としてはhttp://d.hatena.ne.jp/shogo4405/20060825/1156489703の続編です。コマンド叩ける関数あれば他の言語でもいけるかと思います。

先に結果から

PATH_INFO使っているのでApacheの設定次第ではこんな感じで直接.jsが動いてるかのように見えます。そして今回も何の役に立つのでしょうか(?-?)

動かし方

  • いかに掲載したスクリプトrhino.phpやcscript.phpにします。で適当な場所で保存
  • 同一ディレクトリにtest.jsなどとして保存。
  • rhino.php/test.jsでアクセスすると動きます。Apacheの設定次第ではrhino/test.jsでもいけるのでjs単体で動いているかのように見えます。

サンプルソース

WSHを使ったスクリプト
<?php
main();
function main()
{
    $script = substr($_SERVER['PATH_INFO'], 1);

    switch($script)
    {
        case NULL:
            print("引数が正しく指定されていません。");
            break;
        default:
            print exec("C:\\Windows\\system32\\cscript $script");
            break;
    }
}
?>
Rhinoを使ったスクリプト
<?php
main();
function main()
{
    $script = substr($_SERVER['PATH_INFO'], 1);

    switch($script)
    {
        case NULL:
            print("引数が正しく指定されていません。");
            break;
        default:
            print exec("java org.mozilla.javascript.tools.shell.Main -f $script");
            break;
    }
}
?>
js
■WSH用
WScript.Echo("Hello");
■Rhino用
print("Hello");