web-dev-qa-db-fra.com

"Erreur fatale PHP: classe 'HttpRequest' introuvable"

J'ai été coincé à essayer de résoudre ce problème de plusieurs façons, en lisant beaucoup de messages mais sans succès. Je travaille sur un Mac, OSX 10.7 Lion, et j'écris un plugin pour un site WordPress (fichiers php) en utilisant MAMP, et à un moment donné je dois faire une requête HTTP:

$request = new HttpRequest('something'); 
$request->setMethod(HTTP_METH_GET);

Il y a une erreur lors de l'exécution de cette demande et lorsque j'ai vérifié le fichier journal, voici le message:

"PHP Fatal error:  Class 'HttpRequest' not found in (the_php_file)"

J'ai déjà installé PEAR, PECL et l'extension HTTP (pecl_http), Xcode et ses outils de ligne de commande. C'est ce que j'ai fait:

  • modifié le CHEMIN:

    $ echo "export PATH=/Applications/MAMP/bin/php/php5.5.3/bin:$PATH" >> ~/.profile`
    
  • vérifié que les chemins pour php, pear et pecl sont corrects:

    • /Applications/MAMP/bin/php/php5.3.6/bin/php est le chemin pour php
    • /Applications/MAMP/bin/php/php5.3.6/bin/pear pour poire
    • /Applications/MAMP/bin/php/php5.3.6/bin/pecl pour pecl
  • J'ai téléchargé la source de php à partir de la page MAMP (et vérifié que la version que j'ai téléchargée était la même que j'utilise, qui est php5.5.3). Ensuite, j'ai extrait le contenu et l'ai mis dans /Applications/MAMP/bin/php/php5.5.3/include/php

  • Dans /Applications/MAMP/bin/php/php5.5.3/include/php j'ai exécuté ./configure
  • J'ai exécuté: pecl install pecl_http
  • J'ai également ajouté ces extensions au php.ini (initialement, j'ai modifié le fichier MAMP/bin/php/php5.5.3/conf/php.ini):

    extension=raphf.so
    extension=propro.so
    extension="http.so"
    

À propos de ce dernier entre guillemets: lorsque j'ai ajouté l'extension manuellement, je l'ai fait comme ceci: extension=http.so. Ensuite (en essayant de résoudre mon problème), j'ai essayé une installation alternative qui modifiait automatiquement le php.ini et écrivais l'extension avec le quot. marques, mais le résultat était toujours le même, donc cela n'a pas fait de différence.

Après tout cela, j'ai arrêté le serveur MAMP et l'ai redémarré, mais quand j'ai exécuté le php, j'ai quand même eu l'erreur (visible dans le php_error.log):

PHP Fatal error:  Class 'HttpRequest' not found

J'ai suivi ce guide principalement, parmi tant d'autres: http://www.lullabot.com/blog/article/installing-php-pear-and-pecl-extensions-mamp-mac-os- x-107-lion

J'apprécierais toute idée parce que je suis à court d'eux.

10
chechab

La classe HttpRequest est fournie par v1 de cette extension PECL.

Réinstallez via: $ pecl install -f pecl_http-1.7.6

Vous pouvez trouver de la documentation pour v2 ici, cependant: https://mdref.m6w6.name/http

25
m6w6

alternativement, si vous ne pouvez pas contrôler certaines variables d'environnement ou installer des packages, vous pouvez essayer d'utiliser curl qui devrait retourner un objet json (ci-dessous est un extrait de travail d'un appel Google api).

$url = 'https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=TOKEN_DATA_123';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$json = json_decode($response, true);
curl_close($ch);
print_r($json);
$userEmail = $json["email"];
3
tony gil