L'estensione CURL per PHP> = 5.5.24 supporta HTTP/2. (dal this commit)
È inoltre necessario installare un libcurl, ovvero la libreria sottostante utilizzata dalle funzioni di curl, con supporto HTTP/2 abilitato. Ciò significa un libcurl più recente di 7.38.0 ma in realtà, più recente è, meglio è. Libcurl deve essere stato costruito con supporto HTTP/2 abilitato esplicitamente, usando il flag --with-nghttp2
in fase di compilazione.
Utilizzare l'arricciatura come si usa normalmente e impostare l'opzione CURLOPT_HTTP_VERSION
per utilizzare HTTP/2 passando CURL_HTTP_VERSION_2_0
. Quindi la richiesta verrà aggiornata alla versione 2 se il client e il server lo supportano entrambi.
Prima di PHP 5.5.24, se libcurl è stato creato con supporto HTTP/2, è possibile passare il valore int di CURL_HTTP_VERSION_2_0
in modo esplicito in quanto PHP lo passerà ancora attraverso libcurl. Attualmente, ha un valore di 3
- questo non dovrebbe cambiare, ma potrebbe.
if (!defined('CURL_HTTP_VERSION_2_0')) {
define('CURL_HTTP_VERSION_2_0', 3);
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);
fonte
2016-01-05 10:44:46
Ho provato ad installare entrambe le versioni 5.6.21 e 7.0.6 di XAMPP su Mac e Linux, ma ottengo sempre questo errore: 'Client HTTP/2 stringa di prefazione mancante o corrotta. Hex dump per byte ricevuti ... '. Sai come posso risolvere questo? Sono in grado di inviare notifiche push dalla riga di comando, ma in PHP non funziona. – Nickkk
Vorrei capire se le notifiche push con HTTP/2 e curl 7.38.0 funzioneranno nell'ambiente di hosting condiviso? I provider di hosting precedentemente condivisi bloccheranno le porte 2195 e 2196 a causa di motivi di sicurezza, quindi la notifica push tramite socket TCP non sarebbe possibile. –
@raj: questa è una domanda completamente separata, non adatta per un commento ad una risposta ... –