ホームページ  >  記事  >  バックエンド開発  >  PHP Curl で 403 エラーが発生した場合はどうすればよいですか?カールエラーの解決策

PHP Curl で 403 エラーが発生した場合はどうすればよいですか?カールエラーの解決策

WBOY
WBOYオリジナル
2016-07-25 08:53:172736ブラウズ
ECURL_SETOPT ($ this-& gt; msh,curlopt_httpproxytunnel, true); HP ドキュメントには詳細な説明がありませんが、mancurl に詳細な説明があります。両方とも proxytunnel (-p パラメーター) を使用して、他のプロトコルを使用できます。は http プロキシ経由で送信されますが、プロキシ (-x パラメータ) は http プロトコルのみを使用できます。つまり、Google Baidu のサーバーがcurlのproxytunnelと競合しているため、403が返されるのだと思います。 上記 2 行のコードの最初の文を無効にすると、curl アクセスは通常に戻ります。
さらに、MAC OSX では、Curl バージョンを明示的に無効にする必要があります。
$curl --versioncurl 7.16.3 (powerpc-apple-darwin9.0) libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3プロトコル: tftp ftp telnet dict ldap http ファイルhttps ftps
機能: GSS-Negotiate IPv6 Largefile NTLM SSL libz

コードをコピー

他の ubuntu はまったく影響を受けず、何があっても使用できます。curl バージョン:
  1. $curl --version
curl 7.18.2 (i486-pc-linux-gnu) libcurl/7.18.2 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.10
プロトコル: tftp ftp telnet dict ldap ldaps http file https ftps 機能: GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz

コピーコード

MT ホスト上の centos も問題ありません。curl バージョン:
  1. $curl --version
curl 7.15.5 (i686-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5
プロトコル: tftp ftp telnet dict ldap http file https ftps 機能: GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz

Copy code

完全にcurlのバージョンの問題ではないようですが、MAC OSXは確かに異なります。 設定されている場合に、curl が 403 エラーを返す別の理由があります。
  1. curl_setopt($ch, CURLOPT_NOBODY, true);
コードをコピー

し、設定に従う必要があります:

  1. curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
コードをコピー

そうしないと、http サーバーが HEAD コマンドを許可していないため、403 エラーが返されます。

参考: PHP での cURL リクエストに関するトラブル (http://forums.devshed.com/php-development-5/trouble-with-a-curl-request-in-php-445222.html)。 MAC OSX 上のカールが特別である理由は、この理由から除外されない可能性があります。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。