質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.50%

TwitterOAuth ライブラリにてエラー

受付中

回答 2

投稿

  • 評価
  • クリップ 1
  • VIEW 3,732

score 12

以下のコードを共有サーバー上で実行した際に、9行目(最後の行)にてエラーが発生しました。

<?php
    define( 'CONSUMER_KEY', 'hogehoge' );
    define( 'CONSUMER_SECRET', 'hogehoge' );
    define( 'OAUTH_CALLBACK', 'https://example.com/callback/' );
    use Abraham\TwitterOAuth\TwitterOAuth;
    session_start();
    require_once( 'twitteroauth/autoload.php' );
    $connection = new TwitterOAuth( CONSUMER_KEY, CONSUMER_SECRET );
    $request_token = $connection->oauth( 'oauth/request_token', [ 'oauth_callback' => OAUTH_CALLBACK ] 

エラーの内容は以下のとおりです。

Fatal error: Uncaught Abraham\TwitterOAuth\TwitterOAuthException in /home/user/html/DocumentRoot/twitteroauth/src/TwitterOAuth.php:440 Stack trace: #0 /home/user/html/DocumentRoot/twitteroauth/src/TwitterOAuth.php(357): Abraham\TwitterOAuth\TwitterOAuth->request('https://api.twi...', 'POST', 'Authorization: ...', Array) #1 /home/user/html/DocumentRoot/twitteroauth/src/TwitterOAuth.php(134): Abraham\TwitterOAuth\TwitterOAuth->oAuthRequest('https://api.twi...', 'POST', Array) #2 /home/user/html/DocumentRoot/twitter.php(12): Abraham\TwitterOAuth\TwitterOAuth->oauth('oauth/request_t...', Array) #3 {main} thrown in /home/user/html/DocumentRoot/twitteroauth/src/TwitterOAuth.php on line 440

見方が分からず苦戦しております。
アドバイス頂けますと大変助かります。

ちなみに、ローカルのサーバーで上記コードを実行した際は問題なく動作致しました。

よろしくお願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

+1

書いてあるとおり、

Uncaught Abraham\TwitterOAuth\TwitterOAuthException in /home/user/html/DocumentRoot/twitteroauth/src/TwitterOAuth.php:440

でexception投げられてるので、そこからだんだんと

#0 /home/user/html/DocumentRoot/twitteroauth/src/TwitterOAuth.php(357): Abraham\TwitterOAuth\TwitterOAuth->request('https://api.twi...', 'POST', 'Authorization: ...', Array)
#1 /home/user/html/DocumentRoot/twitteroauth/src/TwitterOAuth.php(134): Abraham\TwitterOAuth\TwitterOAuth->oAuthRequest('https://api.twi...', 'POST', Array)
...


と、#0, #1と遡って読んでいくと分かるようになるかと思います。

ところで、共有サーバの方でCONSUMER_KEYとか取っていますか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/07 17:28

    yoorwm さん

    回答頂きありがとうございます。

    > と、#0, #1と遡って読んでいくと分かるようになるかと思います。

    見方が分からないとお伝えしましたが、読み方が分からないに近いでしょうか。
    なんとなく辿ってコードを追ったりはしましたが、自分の知識では結局どこに原因があるのか理解出来ませんでした。

    > #2 /home/user/html/DocumentRoot/twitter.php(12): Abraham\TwitterOAuth\TwitterOAuth->oauth('oauth/request_t...', Array)

    ちなみにこの行の(12)は(9)です。

    > ところで、共有サーバの方でCONSUMER_KEYとか取っていますか?
    いえ、https://apps.twitter.com/ から取得したKEYを静的に指定しています。

    追加のアドバイス頂けますと助かります。

    キャンセル

+1

例外はTwitterOAuthExceptionにスローされますので、それを捕捉してください

<?php
define( 'CONSUMER_KEY', 'hogehoge' );
define( 'CONSUMER_SECRET', 'hogehoge' );
define( 'OAUTH_CALLBACK', 'https://example.com/callback/' );
use Abraham\TwitterOAuth\TwitterOAuth;
session_start();
require_once( 'twitteroauth/autoload.php' );

try{
    $connection = new TwitterOAuth( CONSUMER_KEY, CONSUMER_SECRET );
    $request_token = $connection->oauth( 'oauth/request_token', [ 'oauth_callback' => OAUTH_CALLBACK ]

}catch (TwitterOAuthException $e){
    var_dump($e->getMessage());
    var_dump($e->getTrace());

}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/13 17:37 編集

    b2759 さん
    コメント頂きありがとうございます。
    元々「Uncaught」なので TwitterOAuthException として補足出来ていなかったのだと思いますが、
    > catch (TwitterOAuthException $e)

    > catch (Exception $e)
    に変えることで以下のメッセージが取得できました。

    >
    > string(0) ""
    > array(3) {
    > [0]=>
    > array(6) {
    > ["file"]=>
    > string(66) "/home/user/html/DocumentRoot/twitteroauth/src/TwitterOAuth.php"
    > ["line"]=>
    > int(357)
    > ["function"]=>
    > string(7) "request"
    > ["class"]=>
    > string(33) "Abraham\TwitterOAuth\TwitterOAuth"
    > ["type"]=>
    > string(2) "->"
    > ["args"]=>
    > array(4) {
    > [0]=>
    > string(43) "https://api.twitter.com/oauth/request_token"
    > [1]=>
    > string(4) "POST"
    > [2]=>
    > string(315) "Authorization: OAuth oauth_version="1.0", oauth_nonce="98c80a237fd9527d653b2833dd640dca", oauth_timestamp="1510562024", oauth_consumer_key="xxxxxx", oauth_callback="https%3A%2F%2Fexample.jp%2Fcallback%2F", oauth_signature_method="HMAC-SHA1", oauth_signature="xxxxxx""
    > [3]=>
    > array(0) {
    > }
    > }
    > }
    > [1]=>
    > array(6) {
    > ["file"]=>
    > string(66) "/home/user/html/DocumentRoot/twitteroauth/src/TwitterOAuth.php"
    > ["line"]=>
    > int(134)
    > ["function"]=>
    > string(12) "oAuthRequest"
    > ["class"]=>
    > string(33) "Abraham\TwitterOAuth\TwitterOAuth"
    > ["type"]=>
    > string(2) "->"
    > ["args"]=>
    > array(3) {
    > [0]=>
    > string(43) "https://api.twitter.com/oauth/request_token"
    > [1]=>
    > string(4) "POST"
    > [2]=>
    > array(0) {
    > }
    > }
    > }
    > [2]=>
    > array(6) {
    > ["file"]=>
    > string(44) "/home/user/html/DocumentRoot/twitter.php"
    > ["line"]=>
    > int(15)
    > ["function"]=>
    > string(5) "oauth"
    > ["class"]=>
    > string(33) "Abraham\TwitterOAuth\TwitterOAuth"
    > ["type"]=>
    > string(2) "->"
    > ["args"]=>
    > array(2) {
    > [0]=>
    > string(19) "oauth/request_token"
    > [1]=>
    > array(1) {
    > ["oauth_callback"]=>
    > string(30) "https://example.jp/callback/"
    > }
    > }
    > }
    > }

    キャンセル

  • 2017/11/13 17:50

    どこの共有サーバを使用しているか、可能であれば教えて頂けますか

    キャンセル

  • 2017/11/14 00:28

    b2759 さん

    改めてコメント頂きありがとうございます。
    さくらクラウドです。
    OSは RHEL ベースの kusanagi を用いています。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.50%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る