質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.55%

PHPの追加モジュール:Expectの導入

解決済

回答 1

投稿

  • 評価
  • クリップ 1
  • VIEW 1,190

kyoppy

score 10

Apacheに導入しているPHPの追加モジュールとしてExpectを導入しようとしましたが、expect.soをphp.iniで設定しているextension_dirに置いてApacheを再起動した際に、php -m を行うとセグメンテーション違反と言われます。

下記のページを参考にしましたが、相違点として
・expect-0.3.3を導入したこと
・phphizeを実行後のconfigureでtclConfigが見つからないとのエラーが出たため、 tcl8.4.6ディレクトリ内のtclConfig.shをコピーし、configureが指定しているパスに配置したこと
・expect-5.43.0でなくexpect-5.45.0を導入したこと
・php.iniのextemsion_dirが/usr/lib64/20060613であること

php.iniに記入した「extension=expect.so」をコメントアウトすると、セグメンテーション違反の表示は出なくなりますが、expectもphpに反映されていませんので、expectに問題があるのはわかるのですが原因の特定に至りませんでした。何か解決策を教えていただけないでしょう?

参考:expect_expectl関数 - PHPから対話型シェルに応答する

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • hotta

    2017/08/08 15:48

    ビルドが正常終了したのにセグメンテーション違反とは、この先もちょっとイバラの道っぽい感じがします。このモジュールは2年前に開発が止まっているようです。参考までに、これで何を実現しようとしていますか?ひょっとしたら、何か別のアプローチがあるかもしれませんので。

    キャンセル

  • kyoppy

    2017/08/08 15:55

    ご意見ありがとうございます。会社で利用しているグループウェアのパラメータとして、メールの添付ファイルを自動圧縮し、パスワードをかける機能があるのですが、実際に実行してみるとexpect_expectlのメソッドが宣言されてないとのエラーが出たため、Expect関数にたどり着きました。また、phpはver5.2.17であるため対応していないものが無いとは考えにくいかと思います。

    キャンセル

  • hotta

    2017/08/08 16:12

    『コマンドラインで動作する、会話的な(圧縮+PW付与)コマンドを自動的に呼び出さないといけない』ということであれば、仕方がないですね。がんばってください。

    キャンセル

回答 1

check解決した方法

0

phpizeを使用せずに、静的にPHPに組み込むことで解決しました。
参考にさせていただいたサイト:> 第 7章PECL 拡張モジュールのインストール
以下詳細
・各リソースのバージョン
OS:CentOS 6.9
|-TCL:tcl 8.4.18
|-Expect:expect5 5.43
|-Apache:httpd 2.2.34
|-PHP:php 5.2.17
|-expect:expect 0.3.3

・TCLの導入

  1. tcl8.4.18-src.tar.gzを適当なディレクトリに配置
  2. tar -zxvf tcl8.4.18-src.tar.gz -C 展開したいディレクトリ
  3. cd 2で展開したディレクトリ/unix
  4. ./configure
  5. make
  6. make install

・Expectの導入

  1. expect-5.43.0.tar.gzを適当なディレクトリに配置
  2. tar -zxvf expect-5.43.0.tar.gz -C 展開したいディレクトリ
  3. cd 2で展開したディレクトリ
  4. ./configure. --with-tclclient=「TCLの導入」の2.で展開したディレクトリ/generic --enable-shared
  5. make
  6. make install
  7. ls ※libexpect5.43.soが生成されていた場合、8.に進んでください。
  8. cd /usr/local/lib/
  9. ln -s libexpect5.43.so libexpect.so
  10. ldconfig
  11. vi /etc/ld.so.conf
  12. ldconfig

・expectの導入

  1. expect-0.3.3.tar.gzを適当なディレクトリに配置
  2. tar -zxvf expect-0.3.3.tar.gz /usr/local/src/php-5.2.17/ext/
  3. cd 2で展開したディレクトリ (phpをソースから展開した場合は、phpを展開したディレクトリの直下にあると思います。yumなどで入れられた方は「find / -name ext」などで検索されてください)
  4. mv expect-0.3.3 expect
  5. cd /usr/local/src/php-5.2.17/
  6. rm configure(実行後に「yes」を入力)
  7. ./buildconf --force
  8. ./configure --help ※--with-expectがあることを確認してください。
  9. ./configure --with-expect
  10. make
  11. make test
  12. make install

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.55%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる