2012-04-06 19 views
11

Xdebug được tải, nhưng không được tải dưới dạng tiện ích mở rộng zend. Nó có nghĩa là gì? Làm thế nào để giải quyết vấn đề này?Cảnh báo "XDEBUG NOT LOADED AS ZEND EXTENSION" có nghĩa là gì?

+0

Cấu hình của bạn là gì? Có gì trong ** php.ini ** của bạn? ('zend_extension_debug = *'). Biết thêm chi tiết sẽ được đánh giá cao. – Liyali

+0

Làm cách nào để bạn biết nó không được tải dưới dạng tiện ích mở rộng zend? bạn đọc những thứ đó ở đâu? Bạn có thể cung cấp ảnh chụp màn hình không? – hakre

Trả lời

15

Lỗi này có nghĩa là bạn đã sử dụng "extension =" để tải Xdebug. Đó có thể là trong php.ini bình thường của bạn, hoặc trong một tệp có tên là xdebug.ini mà một số bản phân phối muốn thêm vào. Trong mọi trường hợp, Xdebug cần được tải dưới dạng phần mở rộng Zend cho một số tính năng nhất định như gỡ lỗi từng bước. Vì Xdebug không có nghĩa là làm việc như một phần mở rộng bình thường, nó có thể bị sập và ghi.

Cú pháp tải Xdebug dưới dạng phần mở rộng Zend phụ thuộc vào phiên bản PHP và bản dựng. Tôi sẽ đề nghị bạn sử dụng http://xdebug.org/wizard.php để cung cấp cho bạn các dòng chính xác.

+3

"Trong mọi trường hợp, Xdebug cần được tải dưới dạng phần mở rộng Zend" - bạn có thể giải thích tại sao không? Khi tôi cài đặt xdebug thông qua PECL, tôi được nhắc thêm "extension = xdebug.so" vào php.ini và phpinfo() báo cáo tất cả các loại lòng tốt về cách xdebug được cài đặt và làm việc, nhưng nó cũng nhắc tôi rằng đó là " không được tải dưới dạng tiện ích mở rộng Zend "mà không có bất kỳ giải thích nào về lý do tôi sẽ quan tâm. –

+3

Ít nhất trong Windows, trình hướng dẫn xdebug tạo ra một lỗi nhỏ: nó gợi ý thêm một số thứ như 'zend_extension = C: \ Program Files (x86) \ PHP \ v5.3 \ ext \ php_xdebug-2.2.1-5.3-vc9-nts. dll'. Nó phải là 'zend_extension =" C: \ Program Files (x86) \ PHP \ v5.3 \ ext \ php_xdebug-2.2.1-5.3-vc9-nts.dll "' để thực sự hoạt động. – texnic

+0

@texnic Thanks !. Trình hướng dẫn đã cho biết thêm "zend_extension = ext \" vào tệp php.ini. Nó nên nói thêm xdebug.dll như một phần của đường dẫn mở rộng, ví dụ: "zend_extension = ext \ php_xdebug-2.2.2.dll". Tôi lãng phí 30 phút cố gắng tìm ra điều đó. – b01

4

Đảm bảo rằng cấu hình được định cấu hình để tải chính xác dưới dạng zend_extension. Bên trong php.ini thêm dòng này

zend_extension="/usr/local/php/modules/xdebug.so" 
+0

Trong bản cài đặt CentOS 6 của tôi, nó là: 'zend_extension =/usr/local/lib/php/extensions/no-debug-non-zts-20121212/xdebug.so' (Ngoài ra, tôi có một php.ini địa phương trong web root mà hơn cưỡi php.ini mặc định.Có vẻ như tôi phải thêm chỉ thị ở đó nếu tôi muốn nó hoạt động bên trong đường dẫn web đó.) –

0

Những người khác đã giải thích rằng lỗi là do Xdebug đang được tải dưới dạng mô-đun PHP thông thường thay vì là phần mở rộng Zend. Bạn có thể sử dụng wizard mà Derick liên kết hoặc nhập thủ công dòng như Starx đã hiển thị.

Tuy nhiên, có sự cố mà bạn có thể gặp phải. Chỉ thị extensions_dir trong php.ini hiện chỉ áp dụng cho các mô-đun PHP, not to Zend extensions. Vì vậy, bạn không thể sử dụng một cấu hình chung như thế này:

[PHP] 
extension_dir = .\ext 
extension  = php_memcache.dll 
… 
[zend] 
zend_extension = php_xdebug-2.2.3-5.3-vc9-nts.dll 

Trong khi PHP sẽ được tải một cách chính xác php_memcache.dll từ thư mục con ext, nó sẽ không tải php_xdebug-2.2.3-5.3-vc9-nts.dll và sẽ ném lỗi Failed loading php_xdebug-2.2.3-5.3-vc9-nts.dll.

Để sửa lỗi này, bạn sẽ cần phải hoặc là sử dụng một/đường dẫn tuyệt đối đầy đủ điều kiện như:

zend_extension = C:\foobar\PHP\ext\php_xdebug-2.2.3-5.3-vc9-nts.dll 

hoặc một đường dẫn tương đối như thế này:

zend_extension = ext\php_xdebug-2.2.3-5.3-vc9-nts.dll 
zend_extension = ..\phpexts\php_xdebug-2.2.3-5.3-vc9-nts.dll 
zend_extension = \dev\phpexts\php_xdebug-2.2.3-5.3-vc9-nts.dll 

(wizard sẽ trả lại zend_extension=.\ext\php_xdebug-2.2.3-5.3-vc9-nts.dll bao gồm thư mục nhưng cũng thừa một số .\)

2

Nếu bạn muốn kích hoạt zend*nts*.dll vào bạn php.ini tập tin trên máy chủ Windows, bạn phải sử dụng zend_extension_ts chỉ thị thay vì zend_extension

Ví dụ để tải Xdebug:

[XDeug] 
zend_extension_ts="DRIVE:/PATH_TO_XDEBUG/php_xdebug.dll" 
xdebug.show_local_vars=1 
xdebug.default_enable=On 

Lưu ý: các dấu ngoặc kép vào tập tin dll của bạn

Hy vọng rằng sẽ giúp ai đó :)