PEARのHTTP_Requestをインストールする方法と表示されない原因・調査方法

このQ&Aのポイント
  • さくらのレンタルサーバーにPEARのHTTP_Requestをインストールし、http://pear.php.net/manual/ja/package.http.http-request.intro.phpにあった、「yahoo.com の内容を取得し、それを表示する」というスクリプトを実行したのですが、何も表示されません。
  • 状態は次の通りです:/home/user/.cshrcにset path = (~/pear/bin /sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin $HOME/bin)と設定されています。/home/user/www/php.iniのinclude_pathは「.:/php/includes:/home/user/pear/PEAR」となっています。%pear listコマンドで確認すると、HTTP_Requestが1.4.4のバージョンでインストールされていることがわかります。
  • ブラウザからhttp://user.sakura.ne.jp/の/home/user/www/test_yahoo.php(属性:755)にアクセスしていますが、何も表示されません。原因や調査方法を教えてください。
回答を見る
  • ベストアンサー

PEARのHTTP_Requestをインストール

さくらのレンタルサーバーにPEARのHTTP_Requestをインストールし、 http://pear.php.net/manual/ja/package.http.http-request.intro.php にあった、「yahoo.com の内容を取得し、それを表示する」という 以下のスクリプトを実行したのですが、何も表示されません。 test_yahoo.php ---------------------------------------------------- <?php require_once "HTTP/Request.php"; $req =& new HTTP_Request("http://www.yahoo.co.jp/"); if (!PEAR::isError($req->sendRequest())) { echo $req->getResponseBody(); } ?> ---------------------------------------------------- 状態は以下の通りです。 /home/user/.cshrc set path = (~/pear/bin /sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin $HOME/bin) /home/user/www/php.ini include_path = ".:/php/includes:/home/user/pear/PEAR" %pear list Installed packages, channel pear.php.net: ========================================= Package Version State Archive_Tar 1.3.7 stable Console_Getopt 1.3.0 stable HTTP_Request 1.4.4 stable Mail_Mime 1.8.1 stable Net_Socket 1.0.10 stable Net_URL 1.0.15 stable PEAR 1.9.1 stable Structures_Graph 1.0.4 stable XML_Parser 1.3.4 stable XML_Util 1.2.1 stable % ブラウザからhttp://user.sakura.ne.jp/の /home/user/www/test_yahoo.php(属性:755)に アクセスしていますが、何も表示されません。 原因、または調べ方を教えてください。 よろしくお願い致します。

  • PHP
  • 回答数2
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • NARH
  • ベストアンサー率82% (88/107)
回答No.2

さくらインターネットの仕様は解らないのですが、 > /home/user/www/php.ini > include_path = ".:/php/includes:/home/user/pear/PEAR" とか > ブラウザからhttp://user.sakura.ne.jp/の > /home/user/www/test_yahoo.php(属性:755)に > アクセスしていますが、何も表示されません。 などの作業をされているところを見ると、CGIとして動作している? PEARがインストールされたのは /home/user/pear/PEAR ここ? % ls /home/user/pear/PEAR して HTTP とか HTTP.phpは存在している? 実は /home/user/pear を php.ini に追加するんだったりして。 #PEAR は PEAR という名前のライブラリがあるので、ちょっとそんな気がしてきた。 でも、インストールがうまくいっていないと require_once の行でエラーになるはずですので、画面かerror_log にその旨表示されるはずですね。 #エラー表示が抑制されているのかしらん? 以下のソースを試してみて、「PEARライブラリの読み込みに失敗しました」が表示された場合は、PEARがインストールされた先と include_path の参照先が一致しているか確認してみてください。 <?php //set_include_path( get_include_path() .PATH_SEPARATOR .realpath( '../lib/PEAR' ) ); if( FALSE === @include_once('HTTP/Request.php') ) { echo 'PEARライブラリの読み込みに失敗しました<br/>'; echo 'include_path の値を確認してください。<br/>'; echo 'display_errors も確認するとしあわせになるかも<hr/>'; phpinfo(); die; } else { PEAR::setErrorHandling( PEAR_ERROR_PRINT ); $req =& new HTTP_Request("http://www.yahoo.co.jp/"); if( !PEAR::isError( $req->sendRequest() ) ) { echo $req->getResponseBody(); } else { echo '<pre>'; var_dump( $req ); echo '</pre>'; } }

nenene147
質問者

お礼

大変遅くなりましたが、ご回答ありがとうございます。

その他の回答 (1)

  • NARH
  • ベストアンサー率82% (88/107)
回答No.1

> if (!PEAR::isError($req->sendRequest())) { エラーでなかったら表示するので、エラーなら >} >?> 何も表示しないですね。。。 とりあえず。エラーハンドリングを入れてみてはどうでしょう。 <?php require_once "HTTP/Request.php"; PEAR::setErrorHandling( PEAR_ERROR_PRINT ); $req =& new HTTP_Request("http://www.yahoo.co.jp/"); if( !PEAR::isError( $req->sendRequest() ) ) { echo $req->getResponseBody(); }

nenene147
質問者

お礼

遅くなりましたが、ご回答ありがとうございます。 やってみたのですが、やはり何も表示されません。 PEARの設定がマズイのでしょうか? 試しにxamppを入れて同じスクリプトを実行したら、簡単に表示されました。。。

関連するQ&A

  • PEARのパッケージmail_mimeのインストールについて

    初めて質問させていただきます。 色々検索をしましたがわからなかったのでよろしくお願いいたします。 さくらのレンタルサーバー(スタンダード)を使用しております。 PHP Version 5.2.5でPRAEを使用するためインストールをしました。 パッケージのMail_Mimeを使用するためインストール(pear install mail_mime) をしたら下記エラーが出て失敗していまいます。 %pear install mail_mime pear/Mail_Mime requires PEAR Installer (version >= 1.6.0), installed version is 1.5.4 pear/Mail_mimeDecode requires PEAR Installer (version >= 1.6.0), installed versi on is 1.5.4 pear/Mail_mimeDecode requires package "pear/Mail_Mime" (version >= 1.4.0, exclud ed versions: 1.4.0) No valid packages found install failed PEARのバージョンが古いのかと思いバージョンを調べました(下記)が PEARが1.6.2なので1.6.0よりもバージョンが新しいので 何がエラー要因かわかりません。 %pear list INSTALLED PACKAGES, CHANNEL PEAR.PHP.NET: ========================================= PACKAGE VERSION STATE Archive_Tar 1.3.2 stable Auth 1.5.4 stable Auth_HTTP 2.1.6 stable Config 1.10.11 stable Console_Getopt 1.2.3 stable DB 1.7.13 stable HTTP_Request 1.4.2 stable MDB2 2.4.1 stable Mail 1.1.14 stable Net_SMTP 1.2.10 stable Net_Socket 1.0.8 stable Net_URL 1.0.15 stable PEAR 1.6.2 stable Pager 2.4.4 stable Structures_Graph 1.0.2 stable XML_Parser 1.2.8 stable XML_Serializer 0.18.0 beta XML_Util 1.1.4 stable ちなみに %pear config-show CONFIGURATION (CHANNEL PEAR.PHP.NET): ===================================== Auto-discover new Channels auto_discover <not set> Default Channel default_channel pear.php.net HTTP Proxy Server Address http_proxy <not set> PEAR server [DEPRECATED] master_server pear.php.net Default Channel Mirror preferred_mirror pear.php.net Remote Configuration File remote_config <not set> PEAR executables directory bin_dir /home/アカウント名/pear/bin PEAR documentation directory doc_dir /home/アカウント名/pear/docs PHP extension directory ext_dir /home/アカウント名/pear/ext PEAR directory php_dir /home/アカウント名/pear/php PEAR Installer cache directory cache_dir /home/アカウント名/pear/cache PEAR data directory data_dir /home/アカウント名/pear/data PEAR Installer download download_dir /home/アカウント名/pear/temp directory PHP CLI/CGI binary php_bin /usr/local/php-4.4.7/bin/php php.ini location php_ini <not set> PEAR Installer temp directory temp_dir /home/アカウント名/pear/temp PEAR test directory test_dir /home/アカウント名/pear/tests Cache TimeToLive cache_ttl 3600 Preferred Package State preferred_state stable Unix file mask umask 22 Debug Log Level verbose 1 PEAR password (for password <not set> maintainers) Signature Handling Program sig_bin /usr/local/bin/gpg Signature Key Directory sig_keydir /usr/local/php-4.4.7/etc/pearkey Signature Key Id sig_keyid <not set> Package Signature Type sig_type gpg PEAR username (for username <not set> maintainers) User Configuration File Filename /home/アカウント名/.pearrc System Configuration File Filename /usr/local/php-4.4.7/etc/pear.conf どなたかご教授願えないでしょうか? よろしくお願いいたします

    • 締切済み
    • PHP
  • # pear install

    検索すると# pear install というのがたくさん見つかります。 そのコマンドの文字から、サーバがpearを認識しているように見えるので。/usr/bin/か/usr/sbin/にpearという実行可能なファイルが置いてある状態なんだと思いますが、 そのような状態にするにはどうすればよいですか? ****://pear.php.net/get/PEAR-1.4.5.tgz を解凍して、例えばAutoloader.phpが /usr/share/pear/PEAR/Autoloader.php に置かれるようにファイル移動しました。 ここからどうしたらいいか教えてください。

    • 締切済み
    • PHP
  • PHPでPEARを使った認証について

    PHPでPEARを使った認証をテストしています。 モバイルサイトでも使えるものを・・・ということで見つけたdinolibというものをサンプルに利用しました。 dinolib:http://openlab.dino.co.jp/ サンプル:http://openlab.dino.co.jp/?key=%5B%5Bdinolib_sample%5D%5D dinolibとpear、postgresをインストールし動作確認をしたところ adduser()が見つからずユーザ追加が出来ませんでした。 エラー:Fatal error: Call to undefined function: adduser() in /usr/local/share/dinolib/lib/auth/Auth.php on line 862 pear listではAuthパッケージは見えます。 Installed packages, channel pear.php.net: ========================================= Package Version State Archive_Tar 1.3.1 stable Auth 1.2.3 stable Auth_HTTP 2.1.6 stable Console_Getopt 1.2 stable DB 1.7.6 stable HTML_Template_IT 1.1 stable Mail 1.1.9 stable Net_SMTP 1.2.7 stable Net_Socket 1.0.6 stable Net_UserAgent_Detect 2.0.1 stable PEAR 1.4.5 stable PHPUnit 1.3.2 stable XML_Parser 1.2.7 stable XML_RPC 1.4.4 stable php.iniのinclude_pathにはpear、Authなどは追加してあります。 このエラーが言っているadduser()とは何の事を言っているのでしょうか?

    • ベストアンサー
    • PHP
  • PEAR拡張モジュールのダウンロード

    PHPで入力した情報を別のページに POSTするページを作成しています。 PEARのHTTP_Requestを使いたいのですが、 ダウンロード方法がわかりません。 http://pear.php.net/ ここからダウンロードできるという記事を見つけたので 早速バージョン1.4.4をダウンロードしました。 アーカイブを解凍すると中身はpackage.xmlになっていたのですが、 欲しいファイルはRequest.phpというようにphpファイルです。 Request.phpがダウンロードできると思っていたのですが、 package.xmlをどのように使用すればいいのかわかりません。 ダウンロードする場所は、 http://pear.php.net/package/HTTP_Request/download/ ここではないのでしょうか? 初心者過ぎて大変申し訳ないのですが、 どうかお助けください。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PEAR HTTP_Requestでのヘッダ送信

    PEARのHTTP_Requestを使用し、 下記処理にてTEST_URL向けにPOSTとヘッダを同時に送信する処理を行いたいのですが 411 Length Requiredで返ってきてしまします。 サーバのログには Invalid URI in request Connection: Keep-Alive というログがerrorログに出ています。 そこでRFCを読んで見ると、 転送コーディングが施されていない場合は Content-Length ヘッダは送られなければならないが、 メッセージボディ中のオクテット数と 正確に一致しなければならないとの記載がありました。 ここに引っかかっているのかもと思い対策しようと思いましたが メッセージボディのlength(下記の☆部分)をどのように拾うかがわかりません。 require_once "HTTP/Request.php"; $req = &new HTTP_Request(TEST_URL,array()); $req->setURL(TEST_URL); $req->setMethod(HTTP_REQUEST_METHOD_POST); $req->addHeader('Host',"test.hogehoge.jp\r\n"); $req->addHeader('Content-Length',"-☆-\r\n"); $req->addHeader('Connection', "Keep-Alive\r\n"); $req->addHeader('User-Agent',"TEST ABCDEFG\r\n"); $req->addPostData('TEST_POST', 'testnano'); $result = $req->sendRequest(); if(PEAR::isError($result)) { echo $result->getMessage(); echo "<br />"; } else { echo $req->getResponseCode(); echo "<br />"; echo $req->getResponseBody(); echo "<br />"; } もしかして違う原因でしょうか? よろしくおねがいします。

    • 締切済み
    • PHP
  • PEARインストールについて(xampp

     こんにちは。 xamppを使いPHPの勉強をしております。 PEARインストールの段階で手が止まっており、他の質問を見ても解決せず困っております。 ・OSはWin xp(Home) ・これまでの手順  購入した本を元にPEARをインストールしようと致しましたが、うまく行かず。→購入した書籍のサイトでPEARインストールについて訂正があり、そちらも試したものの、上手くいきませんでした。  また、他のインストール方法を解説しているサイトを見てもなかなかうまくいきませんでしたが、とあるWebサイトの方法を試したところ、コマンドプロンプトにそれまでと違う表示が出てきて、いくつか段階が進みました。 【質問点】 次の結果は、インストールが無事に出来ているのでしょうか??? C:\Documents and Settings\Owner>cd C:\xampp\php C:\xampp\php>pear install MDB2 pear/MDB2 is already installed and is the same as the released version 2.4.1 install failed C:\xampp\php>pear install MDB2#mysql Skipping package "pear/MDB2", already installed as version 2.4.1 No valid packages found install failed C:\xampp\php>pear list INSTALLED PACKAGES, CHANNEL PEAR.PHP.NET: ========================================= PACKAGE VERSION STATE Archive_Tar 1.3.3 stable Console_Getargs 1.3.4 stable Console_Getopt 1.2.3 stable MDB2 2.4.1 stable MDB2_Driver_ibase 1.4.1 stable MDB2_Driver_mssql 1.2.1 stable MDB2_Driver_mysql 1.4.1 stable MDB2_Driver_mysqli 1.4.1 stable MDB2_Driver_oci8 1.4.1 stable MDB2_Driver_pgsql 1.4.1 stable MDB2_Driver_sqlite 1.4.1 stable Mail 1.1.14 stable Mail_Mime 1.5.2 stable Mail_mimeDecode 1.5.0 stable Net_SMTP 1.3.3 stable Net_Socket 1.0.9 stable PEAR 1.8.1 stable PEAR_Info 1.9.2 stable Structures_Graph 1.0.2 stable XML_Util 1.2.1 stable 以上です。 特に3つ目のコマンド(pear install MDB2#mysql)の結果が「上手くいってないのでは???」と首を傾げている状態です。 どなたかお分かりになる方がおられましたら、ご回答を頂けますようお願い致します。

    • ベストアンサー
    • PHP
  • PEARコマンドが使えない・・・

    PEARコマンドが使えなくて困ってます・・・助けて下さい! pear list / pear install *** などのコマンドを打つと -bash: pear: command not found となってしまい、コマンドがないと言われてしまいます。 パスが通ってないのかと思い。 以下のようにパスを通したのですが、変わりませんでした。 echo PATH=$PATH:/usr/bin/PEAR >> .bashrc ; source .bashrc witch pear を実行すると、 /usr/bin/which: no pear in (***/***/sbin:/root/bin:/usr/bin/PEAR) となります。 phpinfoでは、 Configure Command '--without-pear' include_path .:/usr/bin/PEAR となっていますが、このConfigureのwithoutが関係しているのでしょうか? どなたか宜しくお願いします! ------- CentOS 5.1 PHP 5.1.6

    • ベストアンサー
    • PHP
  • PEARのライブラリはどこにインストールされるのでしょう

    お疲れ様です。 お世話になっております。 HTML_QuickFormに関して質問です。 CentOSでPEARをインストールし、 pear install HTML_QuickFormでインストールしました。 pear list すると HTML_Common 1.2.4 stable HTML_QuickForm 3.2.9 stable PEAR 1.4.9 stable と、インストールは確認できます。 php.iniのinclude_pathは include_path =".:/usr/lib/php/smarty:/usr/lib/php/pear" となっています。 smartyはrequire_once"Smarty.class.php";で呼び出しできるのですが、 HTML_QuickFormが"HTML/quick_form.php"でfile not foundになってしまいます。 pearのディレクトリをのぞいてみたら空の状態なんですが、いったいどこにHTML_QuickFormはインストールされているのでしょうか。 pearのライブラリはpearの配下にくると思っていたのですが。 呼び出すにはどこのパスを指定すればよいのでしょう・・・。

    • 締切済み
    • PHP
  • PEARのパッケージのパスの変更方法

    さくらレンタルサーバで、以下の手順でPEARをインストールしました。 http://www.seo-maniax.com/high-rank/sakura-pear/ 次に以下のコマンドを実行しました。 pear channel-update pear.php.net pear install Net_URL2-2.0.0 pear install HTTP_Request2-0.5.1 pear install HTTP_OAuth-0.2.3 そして、/home/ユーザ名/pear/HTTP/Consumer.phpを使ったプログラムで、以下のエラーが。 Warning: require_once(HTTP/OAuth.php) [function.require-once]: failed to open stream: No such file or directory in /home/ユーザ名/pear/HTTP/OAuth/Consumer.php on line 24 Fatal error: require_once() [function.require]: Failed opening required 'HTTP/OAuth.php' (include_path='.:/home/ユーザ名/pear/PEAR') in /home/ユーザ名/pear/HTTP/OAuth/Consumer.php on line 24 line 24は、require_once 'HTTP/OAuth.php'; となっており、正しいパスは'../OAuth.php'なので、正しくインストールしたいのですが、どうすれば良いのでしょうか?

    • ベストアンサー
    • PHP
  • PEAR installでエラー

    PEARのパッケージをinstallしようとしたところ、 WARNING: channel "pear.php.net" has updated its protocols, use "channel-update pear.php.net" to update Cannot install, php_dir for channel "pear.php.net" is not writeable by the current user [root@cn-wedding pear]# pear channel-update pear.php.net と、エラーになったので、 pear channel-update pear.php.net を実行したのですが、 Retrieving channel.xml from remote server となったまま応答がありません。 何か設定が間違っているのでしょうか?全く検討もつきません・・

    • 締切済み
    • PHP

専門家に質問してみよう