7

Debugger クラスを参照していないファイルから、タイトルで参照されているエラーが発生しています。Debugger を手動でインポートすると、エラーが引き続き表示されます。ファイル内のクラス定義を終了する最後の } のエラーで参照されている行番号。} の後には何もありません (?> もありません)。エラーが発生しているファイルは、私が知る限り、デバッガーを直接参照していません (デバッガーの明示的な使用はありません)。

スタックトレースは次のとおりです。

( ! ) Fatal error: Class 'Debugger' not found in /home/gregg/workspace/Fueled/dapprly/backend/app/Plugin/Facebook/Controller/Component/FapiComponent.php on line 107
Call Stack
#   Time    Memory  Function    Location
1   0.0003  245664  {main}( )   ../index.php:0
2   0.0168  1657712 Dispatcher->dispatch( ) ../index.php:100
3   0.0237  2753568 Dispatcher->_invoke( )  ../Dispatcher.php:85
4   0.0237  2753768 Controller->constructClasses( ) ../Dispatcher.php:99
5   0.0237  2755712 ComponentCollection->init( )    ../Controller.php:638
6   0.0255  3057112 ComponentCollection->load( )    ../ComponentCollection.php:52
7   0.0255  3057600 class_exists ( )    ../ComponentCollection.php:99
8   0.0255  3057896 App::load( )    ../ComponentCollection.php:0
9   0.0257  3091416 ErrorHandler::handleError( )    ../ComponentCollection.php:551

107行目あたりのコンテキストは次のとおりです。

class FapiComponent extends Component {
    // -- snip -- //

    public function method()
    {
        $url = urlencode('http://url');

        $param = array(
        'access_token' => '##' ,
        'object' => 'user',
        'fields' => 'feed', 
        'callback_url' => $url);
        $id = $this->facebook->getAppId();
        $subs = $this->facebook->api('/' . $id . '/subscriptions' , 'POST' , $param);
    }
} // <-- line 107 ... nothing after this
4

4 に答える 4

13

これは、コンパイル時のエラー (例: ) の自動読み込みを実行しなかったPHP のバグE_STRICTによるものです。

これはPHP 5.4.21で修正され、回避策のプル リクエストが CakePHP によって受け入れられました。

この問題を手動で回避しE_STRICT、CakePHP のエラー ハンドラから除外するには:

  1. core.php好みのエディターで開きます ( のような操作を実行してファイルを見つけることができます) find . -name core.php
  2. 次の行を見つけます。'level' => E_ALL & ~E_DEPRECATED,
  3. それを次のように置き換えます。'level' => E_ALL & ~E_DEPRECATED & ~E_STRICT,
于 2013-02-18T23:16:13.150 に答える
8

エラーが見つかりました。

私が示したこのクラスには、initialize メソッドが実装されています。しかし、それは次のように実装されています

public function initialize($controller)

これは E_STRICT エラーです。これは、型ヒントが省略されている点で親メソッドとは異なるためです。私のセットアップは E_STRICT エラーをキャッチしています。このエラーにより、デバッガーが検索されます。オートロードできない理由はわかりませんが、メソッドを次のように変更します

public function initialize(Controller $controller)

私が抱えていた問題を修正しました。

于 2012-05-02T14:17:14.713 に答える
0

これは、E_STRICT エラーが発生するたびに発生します。私が持っていた主なものは、PHP 5.4 を実行しているときでした。 public、private、および protected 関数の宣言が必要です。

于 2012-10-15T22:52:25.873 に答える
0

問題は、バージョン 5.4.21 より前の php では、E_STRICT エラーに関するオートローダーに問題があることです。(E_STRICT はコンパイル時エラーです)

https://bugs.php.net/bug.php?id=65322

一部の古いプロジェクトでまったく同じ問題が発生しましたが、2.7.4 で修正されています。

https://github.com/cakephp/cakephp/issues/7376

したがって、本当の解決策は、少なくとも 5.4.21 にアップグレードするか、CakePHP 2.7.4 を待つことです。

于 2015-09-11T13:47:46.907 に答える