4D側でコマンドが正しく実行できると、言い換えれば実行環境の起動、スクリプトのオープン、そしてPHPインタープリターとの通信に成功すると、コマンドからTrueが返されます。 そうでない場合、ON ERR CALLでとらえることができ、GET LAST ERROR STACKで解析できるエラーが生成されます。 さらにスクリプト自身がPHPエラーを生成するかもしれません。この場合PHP GET FULL RESPONSEコマンドを使用してエラーの発生元を解析しなければなりません (例題4参照)。
(*) デフォルトでHTTPヘッダーは返されません: - functionName引数に関数名を渡してPHP Executeを使用すると、phpResultにHTTPヘッダーが返されることはありません。ヘッダーはPHP GET FULL RESPONSEコマンドを使用してのみ取得できます。 - 関数名なし (functionName引数を省略するかからの文字列を渡す) でPHP Executeを使用するとき、PHP SET OPTIONコマンドを使用してPHP Raw resultオプションをTrueに設定することでHTTPヘッダーを返すことができます。
注: PHPを使用して大量のデータを取得する必要がある場合、通常関数の戻り値を使用するよりも、(echoや同等のコマンドを使用して) stdOutバッファーを経由した方が効率的です。詳細はPHP GET FULL RESPONSEコマンドの説明を参照してください。
// エラー管理メソッドをインストール
phpCommError:="" // PHPErrorHandler内で更新される $T_saveErrorHandler :=Method called on error ON ERR CALL("PHPErrorHandler")</p><p> // スクリプトを実行 C_TEXT($T_result) If(PHP Execute("C:\\MyScripts\\MiscInfos.php";"";$T_result)) // エラーなし, $T_Resultには結果が返される Else // エラーが検知された, PHPErrorHandlerメソッドにより管理 If(phpCommError="")
... // PHPエラー, PHP GET FULL RESPONSEを使用する Else ALERT(phpCommError) End if End if
// エラー管理メソッドをアンインストール ON ERR CALL($T_saveErrorHandler)
PHP_errHandlerメソッドは以下の通りです :
phpCommError:="" GET LAST ERROR STACK(arrCodes;arrComps;arrLabels) For($i;1;Size of array(arrCodes)) phpCommError:=phpCommError+String(arrCodes{$i})+" "+arrComps{$i}+" "+
arrLabels{$i}+"\r" End for
TEXT TO BLOB($strDoc;$blobDoc;UTF8 text without length) BLOB TO DOCUMENT("C:\\Scripts\\MyScript.php";$blobDoc) If(OK#1) ALERT("スクリプトの作成中にエラーが発生しました。") End if End if