4DでPHPスクリプトを直接実行できます。これによりPHPで利用できる豊富なユーティリティライブラリを使用できるようになります。特に以下のような機能がライブラリに含まれます:
- 暗号化 (MD5) およびハッシュ
- ZIPファイルの処理
- ピクチャーの処理
- LDAP アクセス,
- COM アクセス(MS Officeドキュメントのコントロール), 等
このリストに挙げるもの以外にもあります。デフォルトで4Dで利用可能なPHPモジュールに関する完全なリストはPHPモジュールのサポート を参照してください。また追加のカスタムモジュールのインストールも可能です。
PHP スクリプトや関数を実行するにはPHP Executeコマンドを使用します。4D v12はデフォルトでバージョン 5.4.11 のPHPを含んでいます。実行されるスクリプトはこのバージョンおよびインストールされたモジュールと互換性が なければなりません。
PHPコマンドに関する完全な説明とシンタックスについては、インターネット上のPHPに関するドキュメントを参照してください。以下はリファレンスを参照できるサイトの例です:
http://us.php.net/manual/en/
http://phpdeveloper.org/
http://php.start4all.com/
http://php.resourceindex.com/Documentation/
4Dは、アプリケーションとPHPインタプリタ間のクライアント-サーバタイプのコミュニケーションプロトコルである、FastCGIでコンパイルされたPHPインタプリタを提供します。
PHPインタプリタは"子プロセス"と呼ばれる一連のシステム実行プロセスをコントロールします。これらのプロセスは4Dから送信されたリクエストを処理するために使用されます。リクエスト実行は同期的に行われます。最適化のため、デフォルトでは最大5つまでの子プロセスを同時に実行できます。この数値はデータベース設定やSET DATABASE PARAMETERコマンドで変更できます。Mac OSでは、これらのプロセスは最初のリクエストで起動され、PHPインタプリタにより永続的に保持されます。Windowsでは、必要に応じて4Dがプロセスを作成し、必要な時にリサイクルします。4Dはデフォルトで、起動と終了のPHPインタプリタのプロセスの処理を自動的にサポートします。
Note:PHP子プロセスが動作中である間に4Dプログラムが予期せず終了した場合、 システムプロセス管理ウィンドウから手動でそれらを削除しなければなりません。
下図は4D v12の4D/PHPアーキテクチャを示しています:
![](../../picture/187465/pict187465.en.png)
このアーキテクチャは、4Dから定義済みのTCPアドレス (IPアドレスとポート番号) に送信される内部リクエストのシステムで動作します。同じマシン上で複数のPHPインタプリタが動作しているなどの場合は必要に応じてデータベース設定またはSET DATABASE PARAMETERコマンドを使用してこのアドレスを変更できます。
警告: 同じマシン上で2つの4Dアプリケーションを起動し、それぞれから (PHP Execute コマンドを使用して) PHPステートメントを実行する場合、FastCGI PHPインタープリタの待ち受けポートを変更して、それぞれのアプリケーションが異なるインタープリタを使用できるようにしなければなりません。そうでなければ、PHPステートメントを正しく実行することができず、4Dアプリケーションがフリーズすることもあります。
4Dが提供するものとは異なるPHPインタプリタを使用することができます。これによって、4Dがアップデートされたときでも同じPHPインタプリタを使用し続けることができます。また、必要なカスタムモジュールを全てインストールすることが可能です。実際、4D付属のインタプリタではカスタムPHPファイルを使用することはできません。デフォルトで提供されているもの以外のPHP設定オプションを使用するためには、外部インタプリタを管理する必要があります。
カスタムPHPインタプリタは2つの条件を満たさなければなりません:
- FastCGIでコンパイルされていなければなりません。
- 4Dと同じマシン上になければなりません。
カスタムPHPインタプリタを使用するには、指定されたアドレスとTCPポートで待ち受けを行うよう、また4Dの内部インタプリタを有効にしないよう設定します。これらのパラメタはデータベース設定 あるいはセッションごとにSET DATABASE PARAMETERコマンドで設定できます。もちろんこの場合、インタプリタの起動や動作は開発者が管理しなければなりません。
php.ini 初期化ファイルは、データベースのResources フォルダ内にあります。php.iniファイルは特にPHPエクステンションの場所を定義するために使用できます。
もし最初の呼び出し時にこのファイルが存在しないと、4Dは適切な設定オプションを使用してファイルを作成します。
外部インタープリターのphp.iniファイルは以下のエントリーを含んでいなければなりません:
カスタムphp.iniファイルの設定に関する情報は、4Dが提供するphp.iniファイルのコメントを参照してください。