4D v14.3

PHPモジュールのサポート

ホーム

 
4D v14.3
PHP
PHPモジュールのサポート

PHPモジュールのサポート  


 

 

このappendixでは、4DのPHPモジュール実装について説明します。以下の項目について説明します:

  • 4DのPHPインタプリタでデフォルトで提供される標準PHPモジュールのリスト
  • 4Dが保持しない標準PHPモジュールのリスト
  • 追加モジュールのインストール

注: さらにモジュールを追加でインストールしたい場合には、外部 FastCGI-php インタープリタを使用する必要があります(異なるPHPインタープリターとphp.iniを使用するを参照して下さい)。

 以下の表は4Dにデフォルトで提供されるPHPモジュールの詳細です。

名称Webサイト説明
BCMathhttp://php.net/bc文字列として表された任意の大きさおよび 精度の数をサポートするバイナリ計算機
例:
 C_LONGINT($value;$result)
 $value:=4
 $ok:=PHP Execute("";"bcpow";$result;$value;3)
カレンダーhttp://php.net/calendar異なったカレンダーフォーマット間の変換を 簡単に行う関数の集まり。ユリウス積算日を標準とする。
例:
 C_LONGINT($NumberOfDays)
 $ok:=PHP Execute("";"cal_days_in_month";$NumberOfDays;1;2;2010)
Ctypehttp://php.net/ctype現在のロケールに基づき文字または文字列がある文字クラスに含まれるかどうかを調べる関数。
例:
  // 提供された文字列のすべての文字が句読点かチェックする
 C_TEXT($myString)
 $myString:=",.;/"
 $ok:=PHP Execute("";"ctype_punct";$isPunct;$myString)
日付・時刻http://php.net/datetimePHPスクリプトを実行するサーバから日付と時間を取得する。
例:
  // ポルトガルのリスボンにおける日の出時刻を計算する。
  // 緯度: 38.4 North、
  // 経度: 9 West、
  // 天頂 ~= 90、
  // 時差: +1 GMT
 C_TIME($SunriseTime)
 $ok:=PHP Execute("";"date_sunrise";$SunriseTime;0;1;38,41;-9;90;1)
DOM (Document Object Model)http://php.net/domPHP5のDOM API による XMLドキュメントの処理。
Exif(*)http://php.net/exif画像のメタデータを扱う。
ファイル情報 (*)http://php.net/fileinfoファイルのcontent-typeとエンコーディングを推測する。
Filterhttp://php.net/filter安全でないソース、例えばユーザ入力などによるデータの検証や除去を行う。
例:
 C_LONGINT($filterId)
 C_TEXT($result)
 $ok:=PHP Execute("";"filter_id";$filterId;"validate_email")
 $ok:=PHP Execute("";"filter_var";$result;"hop@123.com";$filterId)
FTP (File Transfert Protocol)http://php.net/ftpFTPサーバへの詳細なアクセスを提供。
Hashhttp://php.net/hashメッセージダイジェストエンジン。さまざまなハッシュアルゴリズムを使用して、任意の長さのメッセージに対する直接的あるいは段階的な処理を可能とする。
例:
 C_TEXT($md5Result)
 $ok:=PHP Execute("";"md5";$md5Result;"this is my string to hash")
GD (Graphics Draw) ライブラリhttp://php.net/gd画像処理。
Iconvhttp://php.net/iconv様々な文字セット間でのファイル変換。
JSON (JavaScript Object Notation)http://php.net/jsonJSONデータ交換形式の実装
LDAPhttp://php.net/ldapLDAPは、"ディレクトリサーバ" にアクセスするために使用されるプロトコル。 ディレクトリとは、 ツリー構造に情報を保持している特殊なデータベース。
LibXMLhttp://php.net/libxmlXML関数や定数のライブラリ
LibXSLThttp://php.net/xslXSL変換関数のライブラリ
マルチバイト文字列http://php.net/mbstring複数バイト文字エンコーディングの処理や文字列の変換に使用できる、文字処理のための一連の関数。
OpenSSLhttp://php.net/opensslOpenSSL の関数を使用して署名の生成、そして、データのシール (暗号化)およびオープン(復号化)を行う。
PCRE (Perl Compatible Regular Expressions)http://php.net/pcrePerl 5と同じシンタックスおよび語義を使用する一連の正規表現関数。
例:
  // この例は文字列から不要なスペースを取り除きます。
 C_TEXT($myString)
 $myString:="foo   o   bar"
 PHP Execute("";"preg_replace";$myString;"/\\s\\s+/";" ";$myString)
 ALERT($myString)
  // $myStringからスペースの繰り返しが削除され"foo o bar"になる。
PDO (PHP Data Objects) (*)http://php.net/pdoデータベースアクセスのインタフェース。データベース毎のPDOドライバが必要。
PDO_SQLITE (*)http://php.net/pdo_sqliteSQLite 3にPHPからのアクセスを可能にする、PHP Data Objects (PDO) インタフェースを実装したドライバ。
リフレクションhttp://php.net/reflection完全なリフレクションAPIで、 クラス、インターフェイス、関数、メソッド、そしてエクステンションのリバースエンジニアリングを可能にする。
Phar (PHP Archive)http://php.net/pharPHP アプリケーション全体をひとつの "phar" (PHP Archive) ファイルにまとめてしまい、配布やインストールを容易にする。
Sessionhttp://php.net/sessionPHPセッションのサポート
例:
セッションはWebアプリケーションにおいて、それぞれのリクエスト間でコンテキストを保持するために使用されます。4DでPHP Executeを実行すると、PHPスクリプトはセッションを開始し、コンテキストとして保持すべき情報を$_SESSION配列に格納することが可能となります。PHPスクリプトがセッションを使用する場合、PHP GET FULL RESPONSEコマンドを使用してPHPから返されるセッションIDを取得し、PHP Executeを呼び出す都度、事前にSET ENVIRONMENT VARIABLEコマンドを使用してセッションIDを指定しなければなりません。
  // "PHP Execute with context" メソッド
 If(<>PHP_Session#"")
    SET ENVIRONMENT VARIABLE("HTTP_COOKIE";<>PHP_Session)
 End if
 If(PHP Execute($1))
    PHP GET FULL RESPONSE($0;$errorInfos;$errorValues;$headerFields;$headerValues)
    $idx:=Find in array($headerFields;"Set-Cookie")
    If($idx>0)
       <>PHP_Session:=$headerValues{$idx}
    End if
 End if
SimpleXMLhttp://php.net/simpleXMLとても簡単かつ容易に使用できるツールで、XMLをプロパティや配列反復子で処理可能なオブジェクトに変換するために使用します。
ソケットhttp://php.net/socketsBSDソケットに基づくソケット通信機能の低レベルインタフェースを実装し、クライアントとしてだけでなく、ソケットサーバとして動作させることが可能となります。
SPL (Standard PHP Library)http://php.net/spl標準的な問題を解決するためのインターフェイスやクラスを集めたもの。
SQLite (*)http://php.net/sqliteSQLiteデータベースエンジン用の拡張。このエンジンは埋め込み可能。
SQLite3 (*)http://php.net/sqlite3SQLite version 3データベースをサポート。
Tokenizerhttp://php.net/tokenizer字句解析レベルの言語処理を行うことなく、PHPソースを解析/修正するツールを作成することを可能にする関数。
XML (eXtensible Markup Language)http://php.net/xmlXMLドキュメントの解析。
XMLreaderhttp://php.net/xmlreaderプル型のXMLパーサー。
XMLwriterhttp://php.net/xmlwriterXML形式のストリームやファイルを生成。
Zlibhttp://php.net/zlibgzip (.gz) 圧縮ファイルの読み込みと書き出し。
例:
 WEB GET HTTP HEADER($names;$values)
 $pos:=Find in array($names;"Accept-Encoding")
 If($pos>0)
    Case of
       :(Position($values{$pos};"gzip")>0)
          WEB SET HTTP HEADER("Content-Encoding: gzip")
          PHP Execute("";"gzencode";$html;$html)
       :(Position($values{$pos};"deflate")>0)
          WEB SET HTTP HEADER("Content-Encoding: deflate")
          PHP Execute("";"gzdeflate";$html;$html)
    End case
 End if
 WEB SEND TEXT($html)
Ziphttp://php.net/zipZIP圧縮アーカイブやその中のファイルの読み込みと書き出し。

(*) 現時点の4Dでは、Windows上でこれらのモジュールを利用できません。

構造的な理由から、以下のPHPモジュールはWindows上でのみ利用可能です。

名称Web サイト説明
COM & .NEThttp://php.net/comCOM (Component Object Model) はWindowsプラットフォーム上でアプリケーションやコンポーネントが通信を行うおもな方法です。さらに、4DはCOMレイヤからの.Netアセンブリのインスタンス化や作成をサポートします。
ODBC (Open DataBase Connectivity)http://php.net/odbc標準のODBCサポートに加え、PHPの統合ODBC関数により、独自のAPI実装にODBC APIの構文を利用したいくつかのデータベースへのアクセスが提供されます。
WDDX (Web Distributed Data eXchange)http://php.net/wddxプラットフォームにかかわらず、Webを利用したWebアプリケーション間のデータ交換を容易にします。

以下のPHPモジュールは4Dに実装されていません。一番右の列にその理由が記載されています:

名称Web サイト理由- 代わりのソリューション
Mimetypehttp://php.net/mime-magic廃止 (廃止予定) - Fileinfoを使用。
POSIX (Portable Operating System Interface)http://php.net/posix廃止 (廃止予定)。
Regular Expression (POSIX Extended)http://php.net/regex廃止 (廃止予定) - PCREを使用。
Crackhttp://php.net/crackライセンスの制限。
ffmpeghttp://ffmpeg-php.sourceforge.net/ライセンスの制限 - LAUNCH EXTERNAL PROCESSで、コマンドラインでffmpegを使用
Image Magickhttp://php.net/manual/book.imagick.phpライセンスの制限 - GD 2を使用。
IMAP (Internet Message Access Protocol)http://php.net/imapライセンスの制限 - 4D Internet Commandsに統合されたコマンドを使用。
PDF (Portable Document Format)http://php.net/pdfライセンスの制限 - Haru PDFを利用。 
Mysqlnd (MySQL Native Driver)http://dev.mysql.com/downloads/connector/php-mysqlnd/4D環境に適切でない

変更すべき "php.ini"ファイル(後述)は、4Dアプリケーションの Resources\php フォルダか(デフォルトファイル)、データベースの Resources フォルダ内(カスタムファイル)にあります。これについての詳細は、4DでPHPスクリプトを実行する を参照して下さい。

警告: "php.ini" ファイルに変更を加える場合は、十分な注意と、PHPに対する十分な知識が必要になります。カスタムの php.ini ファイルに関する詳細な情報は、4Dによって提供されている php.ini ファイル内のコメントを参考にすることができます。

注: PHP プロセスにかかる時間が比較的長い(30秒を超える)場合、自動的に'timeout' エラーが4Dに返され、プロセスは失敗します。この場合、デフォルトの timeout の時間を設定することによってPHP の実行の時間を確保することができます。これには二通りのやり方があります:

  • "php.ini" ファイル内の max_execution_time 変数を設定する方法(秒数の値を渡します)。警告:この設定は全てのスクリプトに影響します。
  • 長い時間を必要とするプロセスのPHP実行スクリプト内にて set_time_limit(nbSec) コマンドを呼び出す方法。PHPスクリプトの実行に与えられる時間の最大値を nbSec に渡します。この方法は指定したスクリプトのみを変更するので、こちらの方が推奨されます。通常はセキュリティ上の理由からPHPスクリプトの timeout 値は低めに抑えるのがよいでしょう。

 
プロパティ 

プロダクト: 4D
テーマ: PHP

 
ARTICLE USAGE

ランゲージリファレンス ( 4D v14 R2)
ランゲージリファレンス ( 4D v14 R3)
ランゲージリファレンス ( 4D v14.3)
ランゲージリファレンス ( 4D v14 R4)

Inherited from : PHPモジュールのサポート ( 4D v12.4)
Parent of : PHPモジュールのサポート ( 4D v13.5)