2017年11月10日23:10
Cygwin PHPモジュールのファイルがあるのに"No Such File or Directory"エラーがでる
カテゴリー
こんにちは、たかしーです。
以前にもお伝えしたように、CygwinでWebサービスの開発を行っているのですが、今回めちゃくちゃ躓いたポイントがあったので紹介したいと思います。
PHPExcelを使って、Excelファイルを生成しようとしたのですが、途中で
以前にもお伝えしたように、CygwinでWebサービスの開発を行っているのですが、今回めちゃくちゃ躓いたポイントがあったので紹介したいと思います。
PHPExcelを使って、Excelファイルを生成しようとしたのですが、途中で
Call to undefined function simplexml_load_string()
エラーが出てきて実行できなくなりました。
CygwinのPHPではビルトインでxmlプラグインが入っているのですが、調べてみると、PHP7.0以降は動作しないようです。
そこで、cygwinのパッケージリストを調べたところ
php-simplexml
というパッケージ名でモジュールが提供されていることを知り、インストールしてみたのですが
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/2016XXXX/simplexml.dll' - '/usr/lib/php/modules/2016XXXX/simplexml.dll: cannot open dynamic link library file: No such file or directory in Unknown on line 0
のようなエラーが出て読み込めず。
php.iniにフルパスで指定しても、Apacheを再起動しても状況は変わりませんでした。
で、途方に暮れていたところ、下記記事を発見。
cygwin php でphp-gdが動かない。 - それマグで!
http://takuya-1st.hatenablog.jp/entry/2013/03/22/140142
どうやら、拡張モジュールが依存するパッケージがない場合も"No Such..."と表示される模様。
cygcheck dllのパス
としてコマンドを実行してやると、dllが依存していて読みだせないライブラリがわかります。
僕の場合もこれと同じ状況で、どうやらインストール済みのPHP周りのライブラリとのバージョン不整合が原因でした。
パッケージをcygwinのインストーラーを使ってアップデートしたところエラーが解消されました。
まさか過ぎる原因で大分苦労しましたが、解決してよかったです...