「Fatal error: Call to undefined function: curl_init() in」っていうphpのエラー
php5でcurlを使おうと、php.iniの
;extension=php_curl.dll
のコメントアウトを外してApacheを再起動すると、再起動するんだけど
Fatal error: Call to undefined function: curl_init() in (エクステンションのフォルダあたり)
っていうエラーログが吐かれちゃってる。 っていうサーバがありまして、今日あれこれ調べてみましたら、結果的にはパスが通っていなかったっていう原因で。
えっと、php.iniの「extension_dir = 」の所には適切にエクステンションのフォルダを指定してあげます。 これは普通に基本。 私のところのテストサーバでは「C:/php/ext/」であります。 スラッシュでもエンでも、ディレクトリ区切りはどっちでも構わないです。 ただ、半角英数を含むディレクトリ名は御法度だっていう位でしょうか。
んで、Apacheの設定ファイルでありますhttpd.confの中のphpの設定箇所...これは後から追記するんですけど...で「PHPIniDir」を設定している場合には注意が必要で、phpのドキュメントにも
とあり、同じページに
古いバージョンのマニュアルでは、ini ファイルおよび DLL ファイルをシステムフォルダ (C:\WINDOWS など) へ移動させることを推奨していました。この移動により、インストール手順は簡単になりますが、 アップグレードは面倒になっていました。 新しいバージョンのインストールにあたっては、これら移動させたファイル(システムフォルダ内の php.ini や PHP 関連の DLLなど)をすべて削除することを推奨します。
ともあって、あっちこっちにあれこれファイルを移動する手間がPHPIniDirで解決出来るんだぁって早合点して...早合点していいんだけど...phpのバージョンアップ時に関連ファイルを一端退避させてから新しいバージョンので再構築する訳でして。
が、パス通さないとDLL読めないですよって話です。 同じページに書いてあります。
php4ts.dll / php5ts.dll を有効に するには、[1] Windows のシステムフォルダにコピーする方法、 [2] WEB サーバのフォルダにコピーする方法、[3] PHP フォルダ (C:\php) を PATH 環境変数に登録する方法の3つの選択肢があります。メンテナンスを考慮すると、 3番目の環境変数に登録する方法をとるべきでしょう。こうすれば、将来の PHP の アップグレードが容易になります。
そのサーバはこれをしていなかった。 phpのフォルダをPATH環境変数に登録していないので、コメントアウトして定義づけたモジュールが読み込まれず、エラーを発生させるのでありました。
ケアレスミスなんだけど、忘れがち、これ。
追記:phpのcurlに関するマニュアルにも書いてあります。
Win32 ユーザへの注意: このモジュールを Windows 環境で使用可能とするには、 libeay32.dll および ssleay32.dll が PATH の通った場所に存在する必要があります。




