質問: 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から対話型シェルに応答する
回答: 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