PHP マニュアル
前のページ |  | 次のページ

# XXXIV. Expect 関数

# 導入

この拡張モジュールは、PTY を経由したプロセス同士の対話機能を提供します。 ファイルシステム関数 で expect:// ラッパ を利用すれば、シンプルでより直感的なインターフェースが利用できるでしょう。

# 要件

このモジュールは expect ライブラリの 関数を使用します。libexpect バージョン >= 5.43.0 が必要です。

# インストール手順

この PECL 拡張 モジュールは PHP にバンドルされていません。 新規リリース・ダウンロード・ソースファイル・管理者情報・ 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://snaps.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 |

PHP_INI_* 定数の詳細および定義については 付録G を参照してください。

以下に設定ディレクティブに関する 簡単な説明を示します。

expect.timeout integer

  データを待ち受ける際のタイムアウト時間です。 expect_expectl() 関数で使用されます。

  "-1" を指定すると、タイムアウトを発生させないようにします。

  > 注意: "0" を指定すると、expect_expectl() 関数は 結果を直ちに返します。

expect.loguser boolean

  expect が、子プロセスの出力を標準出力に送るかどうかを指定します。 典型的な対話型プログラムは入力した内容を表示するので、これを使用すれば 対話の両方の側を表示することができます。

expect.logfile string

  子プロセスの出力内容が書き込まれるファイルの名前。もしファイルが 存在しない場合は新しく作成されます。

  > 注意: この設置が空欄でなかった場合、 expect.loguser の設定内容に かかわらず出力が書き込まれます。

# リソース型

リソース型は定義されていません。

# 定義済み定数

以下の定数が定義されています。 この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合のみ使用可能です。

`EXP_GLOB` (integer)

  パターンが、glob 形式の文字列パターンであることを示します。

`EXP_EXACT` (integer)

  パターンが、単なる文字列であることを示します。

`EXP_REGEXP` (integer)

  パターンが、正規表現形式の文字列パターンであることを示します。

`EXP_EOF` (integer)

  EOF に到達した際に expect_expectl() が返す値です。

`EXP_TIMEOUT` (integer)

  expect.timeout で指定した秒数を こえた際に expect_expectl() が返す値です。

`EXP_FULLBUFFER` (integer)

  一致するパターンがなかった際に expect_expectl() が返す値です。

# 例

この例ではリモートホストに SSH 経由で接続し、接続先の稼働時間を表示します。

例 1. Expect の使用例

`<?php ini_set ("expect.loguser", "Off"); $stream = popen ("expect://ssh root@remotehost uptime", "r"); $cases = array ( array (0 => "password:", 1 => PASSWORD) ); switch (expect_expectl ($stream, $cases)) { case PASSWORD: fwrite ($stream, "password\n"); break; default: die ("リモートホストへの接続時にエラーが発生しました!\n"); } while ($line = fgets ($stream)) { print $line; } fclose ($stream); ?>`

前のページ | ホーム | 次のページ
read_exif_data | 上に戻る | expect_expectl