ApacheおよびPHP Curlの問題


1

私のApache error.logには次の行があります:PHP警告:PHP Startup:Unable to load dynamic library 'ext \ php_curl.dll'-指定されたプロシージャが見つかりませんでした。

しかし、PATH変数をチェックし、PHPディレクトリがリストされ、extフォルダーが正しく設定され、そのフォルダーにphp_curl.dllが存在します。

問題がないことを確認するために、vc ++再配布を再インストールしました。

私のチェック中に、実行からそれらを開くと、次のすべてのddlが存在することがわかりました(テストのために、PATH変数から見つけることができます)。

  • ws2_32.dll
  • wldap32.dll
  • php7ts.dll
  • libeay32.dll
  • libssh2.dll
  • nghttp2.dll
  • ssleay32.dll
  • normaliz.dll
  • kernel32.dll
  • vcruntime140.dll
  • api-ms-win-crt-stdio-l1-1-0.dll
  • api-ms-win-crt-string-l1-1-0.dll
  • api-ms-win-crt-heap-l1-1-0.dll
  • api-ms-win-crt-convert-l1-1-0.dll
  • api-ms-win-crt-filesystem-l1-1-0.dll
  • api-ms-win-crt-runtime-l1-1-0.dll
  • api-ms-win-crt-utility-l1-1-0.dll
  • api-ms-win-crt-time-l1-1-0.dll
  • api-ms-win-crt-environment-l1-1-0.dll

php_curlがどのような依存関係を持つ可能性があるのか​​わかりません。何か提案があれば、これは大歓迎です。

詳細システム情報:コンパイラMSVC14(Visual C ++ 2015)
アーキテクチャx64
Windows 7プラットフォーム
PHPバージョン7.1.4
Apacheバージョン2.4

回答:


2

私も同じ問題を抱えていましたが、Apacheを介してPHPを実行しているときにのみ現れました。CLIでは問題ありませんでしたphpinfo()

解決策は、Apacheのbinディレクトリ内のいくつかのファイルを置き換えることでした:

  • libeay32.dll
  • ssleay32.dll
  • libssh2.dll
  • nghttp2.dll

PHPがApacheを介して実行される場合、そのbinディレクトリはおそらくシステム%PATH%変数よりも優先されるため、PHPのcurl拡張機能はApacheのライブラリを使用するため、バージョンの不一致が生じます(Apacheのライブラリは必要以上に古いようです)。

また、この動作はPHP 7.1で(afaik)開始されたことにも注意してください。


1
この回答は、この問題に対する他の回答にはない特別な手がかりを提供しました。特にPHP 7.1では、nghttp2.dllを含める必要がありました。
sam452

0

上記のdllコピーを行った後、php.iniに以下の行があり、permファイルがそこにあることを確認してください。パスを忘れずに置いてください。

[カール] curl.cainfo = "C:\ php \ extras \ ssl \ cacert.pem"

[openssl] openssl.cafile = "C:\ php \ extras \ ssl \ cacert.pem" openssl.capath = "C:\ php \ extras \ ssl \ cacert.pem"


スーパーユーザーへようこそ:-パス(上記ではない)が必要な理由とその他の詳細を説明できます。再びスーパーユーザに歓迎、チェックアウトは、回答方法どのように依頼する、ヘルプセンターありがとうを基準として
mic84
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.