Ma question n'est pas de savoir si un serveur supporte HTTP/2 (ils le font tous les deux) mais comment s'assurer que PHP utilise HTTP/2 avec les paramètres cURL corrects pour le la version la plus récente de PHP dans CentOS (construite à partir du dépôt de Remi). Ma propre réponse aborde certaines bizarreries à ce sujet.PHP 7.1: pas de cURL avec HTTP/2
J'ai installé mon CentOS 7 serveur pour soutenir HTTP/2 avec l'aide de ce guide bien: Setting up HTTP/2 on your web server
J'ai les dernières versions, et les installer compilé et tout fonctionne bien. Les pages sont servies avec les en-têtes HTTP/2, exactement comme ils le devraient.
Maintenant, je voudrais utiliser la fonctionnalité HTTP/2 dans mes scripts PHP. Principalement en faisant des appels cURL en mode HTTP/2. J'ai découvert que j'avais besoin de mettre à niveau libcurl
et de le compiler avec un support HTTP/2 spécifique. Avec quelques revers, je l'ai eu pour travailler.
Alors curl -V
me dit:
curl 7.55.0-DEV (x86_64-unknown-linux-gnu) libcurl/7.55.0-DEV OpenSSL/1.1.0f zlib/1.2.7 nghttp2/1.23.1
Release-Date: [unreleased]
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy
Great!
Et phpinfo()
me donne la même version (7.55.0-DEV
) conjointement avec le OpenSSL nouvellement installé, qui est:
OpenSSL 1.1.0f 25 May 2017
Et Apache, BTW:
Server version: Apache/2.4.26 (Unix)
Server built: Jul 7 2017 09:47:22
Cependant, quand je écrire un script PHP simple avec un appel cURL et l'option CURLOPT_HTTP_VERSION
définie sur CURL_HTTP_VERSION_2_0
, comme indiqué dans cet exemple: https://stackoverflow.com/a/37146586/1005334, il me dit la rver n'a pas de support HTTP/2 ...
Comment cela peut-il être?
Une chose que je remarqué, est le bit sur le module OpenSSL phpinfo()
mentionne encore mon ancienne version OpenSSL (1.0.1e-OpenSSL FIPS), bien que la version OpenSSL mentionnée avec le module cURL indique 1.1.0f OpenSSL.
J'ai installé PHP 7.1 (il se trouve actuellement à la version 7.1.7) à partir du dépôt de Remi, pourrait-il être construit avec une version plus ancienne d'OpenSSL donc il ne fonctionnera pas avec mon plus récent? Je lis aussi le support en PHP 7 car HTTP/2 n'est pas très apparent, mais j'imagine que ça ne devrait pas poser de problème, non?
Ou est OpenSSL pas le problème et devrais-je chercher ailleurs, peut-être compiler PHP à partir de la source avec des drapeaux destinés?
Possible copie de [Faire une requête HTTP/2 avec PHP] (https://stackoverflow.com/q/37140780/1255289) – miken32