CLI機能について

ColdFusion 2016からCLI機能が追加されています。これはColdFusion 5までは行えた.cfmをWebリクエスト経由ではなく直接コマンドから実行できる機能となります。使用できる機能などは制限があります。詳しくは下記のオンラインマニュアルをご確認ください

https://helpx.adobe.com/jp/coldfusion/2016/command-line-interface.html
コマンドラインインターフェイス(CLI)

https://helpx.adobe.com/coldfusion/using/command-line-interface.html
(英語)Enhancements in ColdFusion (2018 release)

[ポイント]

  • ColdFusionのCLIはUTF-8で出力します。Windows環境で、コマンドプロンプト上の日本語が文字化けする場合は、コマンドプロンプトの文字コードを UTF-8 に変更してください
    • https://www.javadrive.jp/command/display/index5.html
      • 現在の文字コードを確認するには chcp で表示される数字を確認します。932が表示されたら、そのコマンドプロンプトはShift_JISで表示されています
      • コマンドプロンプトの文字コードをUTF-8に変更するには chcp 65001 を実行します。Active Code Page: 65001 と表示されたら、変更は完了です
         
  • Application.cfcのみ使用可能です。Application.cfmは使用できません
    • Applicaion.cfc の onApplicationStart(), onApplicationStop(), onError() のみサポートされています
    • Application変数は使用できますが、Session変数は使用できません
      • Application, Argument, Request, This スコープのみサポートします
         
  • ColdFusion 2018以降は、REPLモードをサポートしています。cf.bat|cf.sh を引数(呼び出し先の.cfmやパラメータ―)を指定しないで実行すると REPLモードとなります
    • https://ja.wikipedia.org/wiki/REPL
    • 厳密には、REPLモードに入っただけではColdFusionは起動しません。REPLモードに入ったあと、初回に.cfmを実行した際に、起動されます。
       
  • 最初にCLIのプログラムを実行した際、内部でColdFusionが起動します。これは、既存のColdFusionが動作している/していないに関わらず、CLI用にColdFusionが起動するようになっています。
    • Linux環境の場合、コマンドを実行したユーザーでColdFusionが起動します。これにより、ファイル・フォルダ権限やログファイルの書き出しエラー(後述)が発生しないかを注意してください
    • ColdFusionが起動される際にエラーメッセージが表示される
      • これはColdFusionを起動する際などのエラーメッセージが標準出力されているためです。REPLモードで起動した際、2回目以降の呼び出し時にはエラーメッセージは発生しません。また、CLI自体が対応していない機能でエラーが発生する場合もありますが、この場合は、CLIの動作には影響がないため、表示されるエラーメッセージは無視してください(後述)

        [起動時などに表示されるメッセージの例]
        • Error [main] - Unable to install dotnet package: coldfusion.server.ServiceException: ポート 6097 は既に占有されています。
          • ColdFusion 2021で、既にColdFusionが起動している状態で表示されます。CLI自体は.NET統合はサポートされていませんが、ColdFusion 2021に dotnet パッケージをインストールしていると、CLIの起動時にもdotnetパッケージが読み込まれ、同じポート番号を使用しようとするため、エラーとなります。ColdFusion 2021で dotnetを使用していない場合は、dotnetパッケージをアンインストールすることで、このエラーは発生しなくなります
        • Error [Thread-11] - Connect to 127.0.0.1:8991 [/127.0.0.1] failed: 接続を拒否されました (Connection refused): //127.0.0.1:8991/PDFgServlet/
          • ColdFusion 2021で、htmltopdfパッケージをインストールしていると、CLI起動時にPDFgServletへの接続確認が行われるため、Add-onサービス(cfjetty)が起動していない場合はエラーが表示されます。CLIでhtmltopdfはサポートされていないため、このエラーが表示されても動作に支障はありません
        • java.io.FileNotFoundException: /tmp/Adobe/ColdFusion/logs/hibernatesql.log (許可がありません)
              at java.base/java.io.FileOutputStream.open0(Native Method)
              at java.base/java.io.FileOutputStream.open(FileOutputStream.java:298)
          • Linux環境のColdFusion 2021で、一部のパッケージをインストールしていると、それらパッケージのログファイルを/tmp/Adobe/ColdFusion/logs 内に出力します。そのフォルダ・ファイルに対して書き込み権限がないとエラーが発生します。例えば、AユーザーでCLIを起動した後に、別のBユーザーでCLIを起動すると、これらlogファイル・フォルダにBユーザーがアクセスできないため、エラーが発生します


 


記事公開日:2021年09月06日
最終更新日:2021年09月06日


x

Sample Modal Window

This is just a sample…

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent suscipit iaculis libero sed tristique. Quisque mollis dolor non tellus placerat vitae sodales lectus porta. Curabitur ut suscipit tellus. Maecenas rhoncus, ante vitae vehicula vestibulum, metus sapien dapibus tellus, et mattis dolor neque vitae nisl. Nullam eleifend ultrices ipsum eget pretium. Curabitur semper metus ut ante adipiscing nec volutpat sem rutrum. Nullam a nisi lacus, non interdum ante. Vivamus ante augue, commodo vel egestas sed, pharetra nec dui. Quisque sed tellus felis. Donec ipsum mauris, sagittis eu accumsan in, aliquam non ipsum.

Vestibulum tempor nunc nec felis scelerisque eget elementum erat dignissim. Ut vel ipsum mollis orci venenatis luctus. Aenean vehicula quam vel quam porttitor ac iaculis elit pulvinar. Proin consequat, ipsum eu venenatis semper, justo turpis posuere tortor, ac placerat metus nisl et lectus. Nulla cursus dui id nunc ullamcorper sed semper nisl lobortis. Aliquam erat volutpat. Phasellus arcu ante, imperdiet in ornare sed, laoreet eu massa.