1. ホーム
  2. php

[解決済み] PHPがphp_curl.dll拡張モジュールを読み込むことができない

2022-03-03 05:40:27

質問

昨日の記事のフォローアップ( PHPでcURLを使えるようにする )

問題は、PHPがphp_curl.dllをロードできていないことです。 いくつかのステップを試してみました。 extension=php_curl.dll を確認し、依存関係のある libeay32.dllssleay32.dll php_curl.dllを再ダウンロードして、古いものを置き換え、最後にそのファイルをSystem32フォルダにコピーして、パスにeixstを追加してください。

Apache 2.2とPHP 5.4.14を使用しています。 XAMPやWAMPは使用せず、それぞれのパッケージでインストールしました。 Windows 7 64bitを使用しています。

どんなことでもご相談ください。

解決方法は?

libeay32.dllssleay32.dll にはパスアクセス可能でなければならない。 php_curl.dll の読み込みに成功する。

しかし、それらをコピーして、Apache の ServerRoot の場合、Apacheの \bin\ ウィンドウズ \System32\ を Windows のメインディレクトリにコピーすることは、 悪いハックであり、新しいバージョンの PHP でさえ動作しないかもしれません。

正しい方法は、PHP のパスを Windows の Path 変数を使用します。

  1. Control Panel -> System クリック システムの詳細設定 を押すか WIN + R と入力します。 SystemPropertiesAdvanced
  2. ボタンをクリックする 環境変数 .
  3. システム変数 を見つけることができます。 Path という変数があります。それを編集して、先頭に C:\PHP; を追加し、PHP フォルダへのパスを指定します。
    (ヒント:PHPフォルダに C:\Program Files\PHP のように、短いファイル名を使う必要があるかもしれません。 C:\Progra~1\PHP .)
  4. それから Apache を完全に停止して、もう一度起動してください (単純な再起動では十分ではないかもしれません)。

2017-05に更新しました。
上記の指示を変更し 前置詞 の代わりに、PHPのパスをPath変数に設定します。 追加 を追加します。これにより、PHP のパスにある DLL が使用され、システムの他のパスにある他の (古い) バージョンの DLL は使用されないことが確認されます。

2018-04にアップデートしました。
をお持ちの方は すでに を誤って選択し、PHP DLL を Apache または Windows のパスにコピーしてしまった場合は、 それらを再度削除することを強く推奨します! そうしないと、後でPHPをアップデートしようとしたときに問題が発生する可能性があります。新しいPHPのバージョンがこれらのDLLの新しいバージョンを持ってきても、古いDLLがシステムやウェブサーバーのパスにまだ残っている場合、これらの古いDLLが最初に見つかるかもしれません。この場合、PHPインタプリタが起動できなくなることは間違いありません。このようなエラーは、理解し解決するのが非常に困難です。そのため、よりよいクリーンアップ をコピーし、WindowsやApacheのパスから上記のDLLを削除してください。
(コメントでこの問題を指摘してくれた @EdmundTam と @WasimA. に感謝します!)

2019-10にアップデートしました。
ヒント:これらのDLLのすべてのコピーを見つけ、間違ったフォルダーに配置した可能性があるかどうかを確認するには、Windowsのコマンドプロンプトウィンドウで次のコマンドを使用します。

dir c:\libeay32.dll /s
dir c:\ssleay32.dll /s

これらのコマンドは、システムドライブC:のディレクトリ構造全体を検索するため、完了までに時間がかかることがありますので、ご注意ください。

2020-08にアップデートしました。
PHPのフォルダにスペースが含まれている場合(例. C:\Program Files\PHP ) の中で短いファイル名形式を使用する必要があるかもしれません。 Path 変数に追加します(例. C:\Progra~1\PHP ). このヒントをくれた@oneeに感謝します!