- 締切済み
レンタルサーバーでのcronエラー
未来サーバーでBOTをPHPにて作成して起きたのですがcronで定時に作動させようとすると以下のエラーが出ます。 Parse error: syntax error, unexpected T_FUNCTION in /home/u111111/public_html/111111/test/TwistOAuth.php on line 546 そして下記がその部分です。 public function curlStreaming($url, $callback, $params = array(), $proxy = '') { static $decode; if (!$decode) { if (version_compare(PHP_VERSION, '5.4.0') < 0) { $decode = function ($ch, $response) { static $rm; if (!$rm) { $rm = new ReflectionMethod(__CLASS__, 'decode'); $rm->setAccessible(true); } return $rm->invoke(null, $ch, $response); }; } else { $decode = array(__CLASS__, 'decode'); } } PHPはVer5.4です。 原因と解決策をご教示いただけないでしょうか? コンソール起動は正常に作動します。宜しくお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- t_ohta
- ベストアンサー率38% (5238/13705)
> couldn't connect to host これは、DNSが引けていないとかProxyの設定が正しくないと言った時に起き易いエラーですね。
- t_ohta
- ベストアンサー率38% (5238/13705)
「Class 'TwistException' not found」とPHPが言っているので、そのクラスが読み込まれていないのでしょう。 クラスファイルの自動読込が行われるようなプログラムになっているのであれば、クラスファイルが置いてあるディレクトリにパスが通っていないのが原因でしょうし、自動読込されないのであればincludeとかrequireで予めクラスファイルを読み込んでおく必要があります。
- t_ohta
- ベストアンサー率38% (5238/13705)
とりあえず if (version_compare(PHP_VERSION, '5.4.0') < 0) { を if (version_compare(PHP_VERSION, '5.4.0') >= 0) { と変更してみてください。 PHPの無名関数はv5.3.0以降で利用できる機能です。 現状のプログラムだとPHPのバージョンがv5.4.0未満の時に無名関数を利用するような動きになっており、実際に使っているPHPのバージョンがv5.3.0未満の時 $decode = function (・・・・ の部分が実行されるとunexpected T_FUNCTIONというエラーが出る可能性があります。
お礼
ご回答いただきましてありがとうございます。 回答いただきましたコードを入力したのですが、別のエラーが出てしましました。 エラー <b>Fatal error</b>: Class 'TwistException' not found in <b>/home/〇〇〇/public_html/〇〇〇/TwistOAuth.php</b> on line <b>1180</b><br /> エラー箇所 private static function checkCurlError($ch) { $error = curl_error($ch); if ($error !== '' && stripos($error, 'Failed writing body') === false) { throw new TwistException($error, curl_getinfo($ch, CURLINFO_HTTP_CODE)); } } twistexceptionはもちろん同じフォルダにアップしているのですが読み込みかクラスの定義が誤っているのでしょうか。 合わせて解決策のご教示をいただけないでしょうか。 宜しくお願い申し上げます。
- t_ohta
- ベストアンサー率38% (5238/13705)
cronで実行した時に使われているPHPはV.5.4で間違いありませんか? プログラムを見るとversion_compare()の判定の所でV.5.4.0よりバージョンが低いときに無名関数を変数に入れるような動きになっていて、これが原因のような気がするんですよね。
お礼
ご回答いただきありがとうございます。 サーバーをweb000hostに変えてみても同じエラーが出てしまいます。 この場合どうコードを書き直せば解決できますでしょうか?
お礼
ご回答いただきありがとうございます。 クラス名は解決できたのですがPHPのバージョンのエラーは解決できませんでした。 別の対策として000webhostでも試したところ【検索失敗: couldn't connect to host】とのエラーが出てしまいました。 合わせて何か解決策等ございましたらご教示お願いいたします