0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PHP Warning: PHP Startup: Unable to load dynamic library 'curl' ...

Last updated at Posted at 2024-09-08

まえがき

xampp で表題のエラーが出ていたので、それを修正するためのメモです。

私の環境

  • Windows 10 Home(22H2)
  • Dドライブ直下にxamppをインストールしています(D:\xampp)。

1. エラーの内容

以前に書いた記事
更新が止まった(?)XAMPPに新バージョンのPHPを導入する
で追加導入したPHP8.3.10は見た目はちゃんと動いたのですが、
apacheerror.logD:\xampp\apache\logs\error.log)に、apacheを起動するたび、以下のような9行のエラーが記録されていました。

[Sun Sep 08 17:52:10.100260 2024] [core:warn] [pid 4956:tid 696] AH00098: pid file D:/xampp/apache/logs/httpd.pid overwritten -- Unclean shutdown of previous Apache run?
PHP Warning:  PHP Startup: Unable to load dynamic library 'curl' (tried: ext\\curl (\xe6\x8c\x87\xe5\xae\x9a\xe3\x81\x95\xe3\x82\x8c\xe3\x81\x9f\xe3\x83\xa2\xe3\x82\xb8\xe3\x83\xa5\xe3\x83\xbc\xe3\x83\xab\xe3\x81\x8c\xe8\xa6\x8b\xe3\x81\xa4\xe3\x81\x8b\xe3\x82\x8a\xe3\x81\xbe\xe3\x81\x9b\xe3\x82\x93\xe3\x80\x82), ext\\php_curl.dll (\xe6\x8c\x87\xe5\xae\x9a\xe3\x81\x95\xe3\x82\x8c\xe3\x81\x9f\xe3\x83\x97\xe3\x83\xad\xe3\x82\xb7\xe3\x83\xbc\xe3\x82\xb8\xe3\x83\xa3\xe3\x81\x8c\xe8\xa6\x8b\xe3\x81\xa4\xe3\x81\x8b\xe3\x82\x8a\xe3\x81\xbe\xe3\x81\x9b\xe3\x82\x93\xe3\x80\x82)) in Unknown on line 0
[Sun Sep 08 17:52:10.153634 2024] [mpm_winnt:notice] [pid 4956:tid 696] AH00455: Apache/2.4.46 (Win64) OpenSSL/1.1.1h PHP/8.3.10 configured -- resuming normal operations
[Sun Sep 08 17:52:10.153634 2024] [mpm_winnt:notice] [pid 4956:tid 696] AH00456: Apache Lounge VS16 Server built: Oct  2 2020 11:45:39
[Sun Sep 08 17:52:10.153634 2024] [core:notice] [pid 4956:tid 696] AH00094: Command line: 'd:\\xampp\\apache\\bin\\httpd.exe -d D:/xampp/apache'
[Sun Sep 08 17:52:10.169262 2024] [mpm_winnt:notice] [pid 4956:tid 696] AH00418: Parent: Created child process 4192
PHP Warning:  PHP Startup: Unable to load dynamic library 'curl' (tried: ext\\curl (\xe6\x8c\x87\xe5\xae\x9a\xe3\x81\x95\xe3\x82\x8c\xe3\x81\x9f\xe3\x83\xa2\xe3\x82\xb8\xe3\x83\xa5\xe3\x83\xbc\xe3\x83\xab\xe3\x81\x8c\xe8\xa6\x8b\xe3\x81\xa4\xe3\x81\x8b\xe3\x82\x8a\xe3\x81\xbe\xe3\x81\x9b\xe3\x82\x93\xe3\x80\x82), ext\\php_curl.dll (\xe6\x8c\x87\xe5\xae\x9a\xe3\x81\x95\xe3\x82\x8c\xe3\x81\x9f\xe3\x83\x97\xe3\x83\xad\xe3\x82\xb7\xe3\x83\xbc\xe3\x82\xb8\xe3\x83\xa3\xe3\x81\x8c\xe8\xa6\x8b\xe3\x81\xa4\xe3\x81\x8b\xe3\x82\x8a\xe3\x81\xbe\xe3\x81\x9b\xe3\x82\x93\xe3\x80\x82)) in Unknown on line 0
[Sun Sep 08 17:52:10.817547 2024] [mpm_winnt:notice] [pid 4192:tid 728] AH00354: Child: Starting 150 worker threads.
[Sun Sep 08 17:52:30.086453 2024] [mpm_winnt:crit] [pid 4192:tid 728] AH02538: Child: Parent process exited abruptly. Child process is ending

2行目と7行目には全く同じエラーメッセージが書かれており、\x...の部分を含めてPHPecho '...';)で表示させると、次のような内容でした。

PHP Warning: PHP Startup: Unable to load dynamic library 'curl' (tried: ext\curl (指定されたモジュールが見つかりません。), ext\php_curl.dll (指定されたプロシージャが見つかりません。)) in Unknown on line 0

このエラーメッセージは、xampp8.2.12の頃から出ていたようです。

(追加)
私の環境では、xampp8.0の頃からPHPのバージョン切り替えをしていました。
一方、最新版のxampp8.2.12を直接インストールした方は、2・7行目と同様のエラーは出ていなかったと思われます。

現に、私もこの後xampp8.2.12をインストールし直してみたところ、2・7行目と同様のエラーは出ませんでした。(ただし、2・7行目以外のエラーは改善が見られませんでした。)

2. 修正できなかった(ネット上の)対応策

Web で情報を探した結果、以下のような対応策が見つかりましたが、いずれも表題のエラーの修正にはつながりませんでした。

  • php.ini 中、extension=curlをコメントアウトする。
  • D:\xampp\php\extWindowsの環境変数に登録する。
  • php_curl.dll(など)を他のフォルダへコピーする。
  • php.ini 中、extension_dir = "ext"を設定する。(→ すでに設定ずみ)

これらのいずれも、解決には至りませんでした。

3. 解決策

結論から言うと、以下の手順のように(Apache を更新)すると、表題のエラーは解決できました。

  1. Apacheダウンロードページから、最新のApachehttpd-2.4.62-240904-win64-VS17.zip)をダウンロード。
  2. ダウンロードしたzipファイルを展開(httpd-2.4.62-240904-win64-VS17フォルダが作られる)。
  3. XAMPP Control PanelからApacheを停止(Stop)。
  4. これまでのApacheD:\xampp\apache)をApache.bakにリネーム(D:\xampp\apache.bak)。
  5. 上記 2 でできたhttpd-2.4.62-240904-win64-VS17フォルダ直下にある、Apache24フォルダをD:\xamppフォルダ直下に移動(又はコピー)(→ D:\xampp\Apache24)。
  6. 上記 5 のフォルダ名をapacheにリネーム(D:\xampp\apache
  7. D:\xampp\apache\confフォルダをconf.originalにリネーム(D:\xampp\apache\conf.original)。
  8. D:\xampp\apache.bak\confフォルダを、D:\xampp\apacheフォルダにコピー(D:\xampp\apache\conf)。

4. 結果

その後のエラーログは、以下のようになりました。
(PHP Warning の行は無くなりました。)

[Sun Sep 08 19:28:50.390398 2024] [core:warn] [pid 4140:tid 448] AH00098: pid file D:/xampp/apache/logs/httpd.pid overwritten -- Unclean shutdown of previous Apache run?
[Sun Sep 08 19:28:50.447332 2024] [mpm_winnt:notice] [pid 4140:tid 448] AH00455: Apache/2.4.62 (Win64) OpenSSL/3.1.7 PHP/8.3.10 configured -- resuming normal operations
[Sun Sep 08 19:28:50.447332 2024] [mpm_winnt:notice] [pid 4140:tid 448] AH00456: Apache Lounge VS17 Server built: Sep  4 2024 10:31:52
[Sun Sep 08 19:28:50.447332 2024] [core:notice] [pid 4140:tid 448] AH00094: Command line: 'd:\\xampp\\apache\\bin\\httpd.exe -d D:/xampp/apache'
[Sun Sep 08 19:28:50.447332 2024] [mpm_winnt:notice] [pid 4140:tid 448] AH00418: Parent: Created child process 7404
[Sun Sep 08 19:28:51.080337 2024] [mpm_winnt:notice] [pid 7404:tid 444] AH00354: Child: Starting 150 worker threads.

それでもまだ、これら6行のエラーメッセージが、Apacheを起動するたび追加されます。どなたか、これらを無くす方法がおわかりの方、ヘルプミー!

参考サイト

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?