上記コードで次のようなエラーが出ます。
Warning: fputs() expects parameter 1 to be resource, string given in SERVER PASS on line 59
解決方法を教えてください。
ご回答よろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答1件
0
ベストアンサー
エラーが出る原因は以下の1点です。
STDIN
STDOUT
STDERR
といった標準リソースはコマンドラインで実行したときにしか定義されないので、Apacheを利用してブラウザからのアクセスでも実行可能にしたい場合にはそれぞれ fopen('php://stdin', 'rb')
fopen('php://stdout', 'wb')
fopen('php://stderr', 'wb')
として自分でリソースを準備する必要がある。
ところでこれ、何年前のコードですか?全体的に非常に古い書き方が目立ちますね…
- fputsはfwriteのエイリアスなので、出来る限り後者を利用すべきである
- そもそも何でecho構文を利用しないのか… (エラーバッファに書き込むケースと統一したいのは分かるけど、あまりPHPでそれをしなくてもいい気がしないでもない)
lang
1echo "New followers count = " . count($new_followers) . "\n";
またTwitterAPIは仕様変更を繰り返しているので、古すぎるコードは参考に出来ません。 現在は…
- TwitterのAPIバージョンは全て1.1に統一されており、URL中には必ず「1.1」というバージョン番号が含まれる
- Basic認証では利用出来ず、OAuth認証必須になっている
結論から言えば、ご提示のコードをいくらPHPでエラーが出ないように修正したところでAPIの利用は実現できません。(TwitterのAPIバージョンとは別に)バージョン1系のOAuth認証が絡んでくる場合は事実上ライブラリ必須になります。バージョン2系であればライブラリ無しでも実装可能とは言われますが、Twitter関連ではまだバージョン1系の方がよく利用されているようです。
TwistOAuth
https://github.com/mpyw/TwistOAuth
(脳内デバッグしかしていないので、何か問題点あればコメントください)
lang
1<?php 2 3require 'TwistOAuth.php'; 4 5$ck = 'コンシューマキー'; 6$cs = 'コンシューマシークレット'; 7$ot = 'アクセストークン'; 8$os = 'アクセストークンシークレット'; 9 10try { 11 $to = new TwistOAuth($ck, $cs, $ot, $os); 12 $p1 = array( 13 'cursor' => -1, 14 'count' => 200, 15 'skip_status' => true, 16 'include_user_entities' => false, 17 ); 18 do { 19 $list = $to->get('followers/list', $p1); 20 foreach ($list->users as $user) { 21 if (!$user->following && !$user->follow_request_sent) { 22 try { 23 $p2 = array('user_id' => $user->id_str); 24 $user = $to->post('friendships/create', $p2); 25 if ($user->following) { 26 echo "Followed @{$user->screen_name}\n"; 27 } else { 28 echo "Sent follow request to @{$user->screen_name}\n"; 29 } 30 } catch (TwistException $e) { 31 echo "Failed to follow @{$user->screen_name}: {$e->getMessage()}\n"; 32 } 33 } else { 34 break 2; 35 } 36 } 37 } while ($p1['cursor'] = $list->next_cursor_str); 38} catch (TwistException $e) { 39 echo "Failed to fetch followers: {$e->getMessage()}\n"; 40}
投稿2014/12/09 19:33
総合スコア5223
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。