PHP Curl – Received HTTP/0.9 When Not Allowed

Skip to content apple-push-notifications curl http php

I stumbled over a weird behavior when I try to send a post HTTP/2.0 request to apples push service:

$http2ch = curl_init(); curl_setopt($http2ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0); curl_setopt($http2ch, CURLOPT_URL, 'https://api.push.apple.com/3/device/megauniquedevicetokendummy'); curl_setopt($http2ch, CURLOPT_PORT, 443); curl_setopt($http2ch, CURLOPT_HTTPHEADER, $httpHeader); curl_setopt($http2ch, CURLOPT_POST, true); curl_setopt($http2ch, CURLOPT_POSTFIELDS, $body); curl_setopt($http2ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($http2ch, CURLOPT_TIMEOUT, 30); curl_setopt($http2ch, CURLOPT_HEADER, 1); $result = curl_exec($http2ch); if ($result === false) { throw new Exception("Curl failed: " . curl_error($http2ch) . " | " . curl_getinfo($http2ch, CURLINFO_HTTP_CODE)); }

The exception is thrown with the Message: Curl failed: Received HTTP/0.9 when not allowed | 0

I explicitly told curl to use HTTP/2.0 on the second line of the code snipped above. Does anyone have any idea what that error message means and why curl uses such an old HTTP version?

I am on PHP 7.2 and curl version 7.66.0.

Advertisement

Answer

I figured it out. Make sure that curl is compiled with nghttp2.

If you are unsure, you can check it on your terminal using curl --version

If you dont find nghttp2/{version} you need to compile curl again with nghttp2.

curl --version example where nghttp2 is missing:

curl 7.66.0 (amd64-portbld-freebsd12.0) libcurl/7.66.0 OpenSSL/1.1.1d zlib/1.2.11

curl --version example where nghttp2 is available:

curl 7.64.1 (x86_64-apple-darwin19.0) libcurl/7.64.1 (SecureTransport) LibreSSL/2.8.3 zlib/1.2.11 nghttp2/1.39.2

Post navigation

SQL – Select doesn’t retrieve results Why is a remote batch file not executed by PsExec started from a batch file ran from within a PHP script with function exec?

Tags

.htaccess 110 Questions ajax 308 Questions apache 152 Questions api 126 Questions arrays 731 Questions codeigniter 273 Questions css 184 Questions curl 135 Questions database 169 Questions eloquent 271 Questions forms 179 Questions html 856 Questions javascript 837 Questions jquery 444 Questions json 276 Questions laravel 2243 Questions laravel-5 238 Questions laravel-8 180 Questions multidimensional-array 117 Questions mysql 1132 Questions mysqli 138 Questions pdo 134 Questions php 11445 Questions regex 239 Questions session 121 Questions sql 317 Questions string 109 Questions symfony 393 Questions woocommerce 599 Questions wordpress 1158 Questions

Từ khóa » Http2 Curl (1) Received Http/0.9 When Not Allowed