この拡張モジュールは、PTY を経由したプロセス同士の対話機能を提供します。 ファイルシステム関数 で expect:// ラッパ を利用すれば、シンプルでより直感的なインターフェースが利用できるでしょう。
この PECL 拡張 モジュールは PHP にバンドルされていません。 この PECL 拡張モジュールをインストールする方法は、 マニュアルの PECL 拡張モジュールのインストール という章にあります。 新規リリース・ダウンロード・ソースファイル・管理者情報・CHANGELOG といった関連する情報については、次の場所にあります。 http://pecl.php.net/package/expect.
PHP 4 の場合、この PECL 拡張モジュール
のソースは、PHP のソースの ext/ ディレクトリ、または
上の PECL リンクで入手可能です。
これらの関数を使用するには、--with-expect[=DIR]
オプションを使用して expect サポートつきで PHP をコンパイルする必要があります。
Windows ユーザは、これらの関数を使用するためには php.ini の中で php_expect.dll を有効にします。 PHP 4 の場合、この DLL は PHP の Windows ダウンロードバイナリの extensions/ ディレクトリ にあります。 この PECL 拡張モジュール用の DLL は、PHP のダウンロード ページあるいは http://pecl4win.php.net/ からダウンロードできます。
php.ini の設定により動作が変化します。
expect 拡張モジュールを設定するために、 設定ファイル php.ini に 設定項目が用意されています。
表 1. Expect 設定オプション
名前 | デフォルト | 変更可能 | 変更履歴 |
---|---|---|---|
expect.timeout | "10" | PHP_INI_ALL | |
expect.loguser | "1" | PHP_INI_ALL | |
expect.logfile | "" | PHP_INI_ALL |
以下に設定ディレクティブに関する 簡単な説明を示します。
expect.timeout
integerデータを待ち受ける際のタイムアウト時間です。 expect_expectl() 関数で使用されます。
"-1" を指定すると、タイムアウトを発生させないようにします。
注意: "0" を指定すると、expect_expectl() 関数は 結果を直ちに返します。
expect.loguser
booleanexpect が、子プロセスの出力を標準出力に送るかどうかを指定します。 典型的な対話型プログラムは入力した内容を表示するので、これを使用すれば 対話の両方の側を表示することができます。
expect.logfile
string子プロセスの出力内容が書き込まれるファイルの名前。もしファイルが 存在しない場合は新しく作成されます。
注意: この設置が空欄でなかった場合、 expect.loguser の設定内容に かかわらず出力が書き込まれます。
expect_popen() は、オープンした PTY ストリームを返します。これを expect_expectl() で使用します。
以下の定数が定義されています。 この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合のみ使用可能です。
パターンが、glob 形式の文字列パターンであることを示します。
パターンが、単なる文字列であることを示します。
パターンが、正規表現形式の文字列パターンであることを示します。
EOF に到達した際に expect_expectl() が返す値です。
expect.timeout で指定した秒数を こえた際に expect_expectl() が返す値です。
一致するパターンがなかった際に expect_expectl() が返す値です。
この例ではリモートホストに SSH 経由で接続し、接続先の稼働時間を表示します。