web-dev-qa-db-ja.com

「PHPの致命的なエラー:クラス 'HttpRequest'が見つかりません」

私は多くの方法でこの問題を解決しようとして立ち往生してきました、たくさんの投稿を読んでもまだ運がありません。私はMac、OSX 10.7 Lionで作業しており、MAMPを使用してWordPressサイト(phpファイル))のプラグインを作成しています。ある時点で、HTTPリクエストを作成する必要があります。

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

このリクエストを実行するとエラーが発生し、ログファイルを確認すると、次のメッセージが表示されます。

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

PEAR、PECL、HTTP拡張(pecl_http)、Xcode、およびそのコマンドラインツールはすでにインストールしています。これは私がやったことです:

  • pATHを変更しました:

    $ echo "export PATH=/Applications/MAMP/bin/php/php5.5.3/bin:$PATH" >> ~/.profile`
    
  • php、pear、peclのパスが正しいことを確認しました:

    • /Applications/MAMP/bin/php/php5.3.6/bin/phpはphpのパスです
    • /アプリケーション/MAMP/bin/php/php5.3.6/bin/pear for pear
    • /Applications/MAMP/bin/php/php5.3.6/bin/pecl for pecl
  • 私はMAMPページからphpのソースをダウンロードしました(そして、ダウンロードしたバージョンが私が使用しているものと同じであることを確認しました。php5.5.3です)。次に、コンテンツを抽出して/Applications/MAMP/bin/php/php5.5.3/include/phpに配置しました

  • /Applications/MAMP/bin/php/php5.5.3/include/phpの内部./configure
  • 私は実行しました:pecl install pecl_http
  • また、これらの拡張機能をphp.iniに追加しました(最初に、MAMP/bin/php/php5.5.3/conf/php.iniファイルを変更しました)。

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

引用符で囲まれた最後の1つについて:拡張機能を手動で追加したとき、次のようにしました:extension=http.so。次に(私の問題を修正しようとするときに)php.iniを自動的に変更する代替インストールを試し、拡張機能をquotで記述しました。マーク、しかし結果はまだ同じだったので、違いはありませんでした。

このすべての後、MAMPサーバーを停止して再起動しましたが、phpを実行してもエラーが発生しました(php_error.logに表示されます)。

PHP Fatal error:  Class 'HttpRequest' not found

私はこのガイドを主に、さらに多くのガイドの中でフォローしています。 http://www.lullabot.com/blog/article/installing-php-pear-and-pecl-extensions-mamp-mac-os- x-107-lion

私はそれらが不足しているので、私はどんな考えにも感謝します。

10
chechab

クラスHttpRequestは、このPECL拡張機能のv1によって提供されます。

再インストール:$ pecl install -f pecl_http-1.7.6

ただし、v2のドキュメントはここにあります: https://mdref.m6w6.name/http

25
m6w6

または、特定の環境変数を制御できない場合やパッケージをインストールできない場合は、jsonオブジェクトを返すcurlを使用してみてください(以下は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