2012-05-02 36 views
7

Tôi nhận được lỗi được tham chiếu trong tiêu đề từ tệp không tham chiếu lớp Debugger. Nếu tôi nhập Debugger theo cách thủ công, lỗi vẫn hiển thị. Số dòng được tham chiếu trong lỗi cuối cùng} kết thúc định nghĩa lớp trong tệp. Không có gì sau} (không có?> Một trong hai). Các tập tin mà tôi nhận được lỗi trong không trực tiếp tham khảo Debugger cho đến nay như tôi có thể nói (như trong, không có sử dụng rõ ràng của Debugger).CakePHP "Lỗi nghiêm trọng: Lớp 'Trình gỡ lỗi' không tìm thấy" trong Tệp không tham khảo Trình gỡ lỗi tham chiếu

đây là stack trace:

(!) 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 

và đây là bối cảnh xung quanh dòng 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 
+0

Liệu việc sử dụng lớp Debugger Component? –

+0

không, tôi đã tìm thấy lỗi. Lớp này mà tôi đã hiển thị có phương thức khởi tạo được triển khai. Nhưng nó được thực hiện như khởi tạo chức năng công cộng (bộ điều khiển $). Đây là lỗi E_STRICT. Thiết lập của tôi đang bắt các lỗi đó. Lỗi này khiến nó tìm kiếm Trình gỡ lỗi. Tôi không chắc chắn lý do tại sao nó không thể tự động tải nó, nhưng thay đổi phương pháp để khởi tạo chức năng công cộng (Controller $ controller) cố định vấn đề tôi đã có. – gregghz

Trả lời

8

Tôi tìm thấy lỗi.

Lớp học này mà tôi đã hiển thị đã triển khai phương pháp khởi tạo. Nhưng nó được triển khai dưới dạng

public function initialize($controller) 

Đây là lỗi E_STRICT vì lỗi này khác với phương pháp gốc bằng cách loại bỏ gợi ý loại. Thiết lập của tôi đang bắt lỗi E_STRICT. Lỗi này khiến nó tìm kiếm Trình gỡ lỗi. Tôi không chắc chắn lý do tại sao nó không thể tự động tải nó, nhưng thay đổi phương pháp thành

public function initialize(Controller $controller) 

khắc phục vấn đề tôi đang gặp phải.

+1

Tôi cũng phát hiện ra rằng điều này xảy ra vì PHP 5.4 bao gồm E_STRICT trong tập E_ALL ngay bây giờ. Vì vậy, bạn cần phải cụ thể * exclude8 E_STRICT nếu bạn không muốn thấy các lỗi đó. Trong php 5.3, bạn phải cụ thể * bao gồm * E_STRICT nếu bạn muốn xem các lỗi đó. – gregghz

0

Điều này xảy ra bất cứ khi nào bạn gặp lỗi E_STRICT. Một trong những chính tôi đã có được khi chạy PHP 5.4, bạn được yêu cầu phải có công khai, tư nhân, và bảo vệ chức năng tờ khai.

13

Điều này là do số PHP bug không thực hiện tải tự động cho các lỗi thời gian biên dịch (ví dụ: E_STRICT).

Điều này đã được sửa trong PHP 5.4.21workaround pull request đã được CakePHP chấp nhận.

Để tự workaround vấn đề này và miễn E_STRICT từ xử lý lỗi CakePHP của:

  1. mở core.php trong trình soạn thảo yêu thích của bạn (bạn có thể tìm thấy các tập tin bằng cách thực hiện một cái gì đó giống như find . -name core.php).
  2. Tìm dòng sau: 'level' => E_ALL & ~E_DEPRECATED,
  3. Thay thế nó bằng: 'level' => E_ALL & ~E_DEPRECATED & ~E_STRICT,
+0

tương tự trong php 5.5.30 – giuseppe

0

Vấn đề là php thấp hơn so với phiên bản 5.4.21 có một vấn đề với autoloader về lỗi E_STRICT. (E_STRICT là một lỗi thời gian biên dịch)

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

tôi gặp phải vấn đề chính xác cùng trên một số dự án cũ, và Nó cố định trong 2.7.4.

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

Vì vậy, các giải pháp thực sự là để nâng cấp lên ít nhất 5.4.21 hoặc chờ cho CakePHP 2.7.4

+1

cùng một vấn đề với php 5.5. Đôi khi gốc của vấn đề là ở nơi khác. – giuseppe

+0

Tôi đoán vấn đề tương tự cũng đã hoạt động trong php 5.5 –

Các vấn đề liên quan