xamppでcurlを有効にしたらモジュールなしエラーになった。

PHPで開発をしていた際に、curl関数を使用する必要がありました。
curl関数は外部APIとの接続を行う関数です。

xamppでcurl関数を使用するためには、curlオプションを有効にする必要があります。
いつものように、php.iniのcurlオプションを有効にしたら、xampp起動時にdllが無い旨のエラーが表示されるようになりました。

php8.3を入れたxamppでは発生せず、明らかにphp8.4から発生しました。
エラー解消方法を調べ対処できましたので、備忘録として記録いたします。

現象は次の通りです。

xamppのphp.iniの「extension=curl」を有効にしたところ、以下のエラーが発生するようになりました。

php_curl.dllが見つからないという旨のエラーでした。

しかしphp_curl.dllは該当のフォルダにありました。

xamppのphpフォルダ内のextフォルダを調べてみたところ、問題のphp_curl.dllはちゃんとありました。
なのに、なぜphp_curl.dllがないというエラーが発生するのでしょうか?

調べてみたところ、次のような理由でエラーになることがわかりました。

libssh2.dllの読み込みができていないと、php_curl.dllに影響がでる

いろいろググって調べてみたところ、意外な原因があることがわかりました。
それは、libssh2.dllが読み込みできていないと、php_curl.dllもエラーになるというものでした。

どういうことかというと、curl関数は、libssh2.dllで提供されている関数を使用しており、libssh2.dllが読み込みできていないと、ともずれでcurl関数もエラーになるということでした。

要は、libssh2.dllの機能を使ってcurlは動作しているので、libssh2.dllは必ず読み込んでおいてください。
ということです。

というわけで、さっそくlibssh2.dllの読み込みをすることにしました。
しかし、ここで疑問がわきました。

どうやればxamppでlibssh2.dllの読み込みを設定できるのでしょうか?
php.iniからでは設定ができないようだったので、さらに調べてみました。

xamppでlibssh2.dllの読み込みの方法

xamppでPHP関連のdllファイルを直接読み込む方法は、xampp独自のhttpd-xampp.confに記述すればよいことがわかりました。

具体的には以下のようにやれば読み込みできました。

(1)httpd-xampp.confを開く

まずはxamppのコントロールパネルから、httpd-xampp.confを開きます。

(2)libssh2.dllの読み込みを記述します

httpd-xampp.confに、libssh2.dllの読み込み記述をし、保存します。

これだけで、curlのエラーが出なくなりました。

無事curl関数が使えました

libssh2.dllを読み込むことで、無事curl関数がPHP8.4の環境でも使えるようになりました。
赤×のエラーが表示されると、思ったより焦りますが、一つ一つ調べれば解決策が見いだせるものです。

似たような現象が他所でも起こっていれば、ググればたいてい同じ現象の記事を見つけられます。
そして、どのように解決したかを調べ、試してゆけば解決に近づきます。

まずは調べる。
その一歩を踏み出すことが肝要です。

今回のレポートは以上です。
読んでいただいてありがとうございました。


ホームページに関するお悩み事やご相談事がございましたら私どもまでご連絡ください。 鋭意ご対応申し上げます。
ホームページのご提案もさせていただいております