Sau một thời gian dài gần 24 giờ khó khăn để cố gắng làm cho xdebug hoạt động với Netbeans 8.0.2, tôi đã tìm thấy một giải pháp mà tôi hy vọng sẽ hoạt động cho tất cả các ngăn xếp liên quan đến Ubuntu và Ubuntu.
Vấn đề số 1: Phiên bản PHP và xdebug phải tương thích
Đôi khi, nếu bạn đang chạy thiết lập Linux và apt-get để cài đặt xdebug, nó sẽ không giúp bạn có được phiên bản xdebug thích hợp. Trong trường hợp của tôi, tôi có phiên bản php mới nhất nhưng là phiên bản xdebug cũ. Đó phải là do phiên bản Xubuntu hiện tại của tôi. Các phiên bản phần mềm phụ thuộc vào kho lưu trữ, phụ thuộc vào phiên bản hệ điều hành bạn đang chạy.
Giải pháp: PHP có một trình quản lý mở rộng gọn gàng được gọi là PECL. Làm theo các hướng dẫn được cung cấp ở đây để thiết lập và chạy nó. Đầu tiên, như được chỉ ra bởi một thành viên ở phần nhận xét, bạn nên cài đặt gói nhà phát triển của PHP để PECL hoạt động:
sudo apt-get install php5-dev
Sau đó, sử dụng PECL, bạn sẽ có thể cài đặt phiên bản ổn định mới nhất của xdebug:
sudo pecl install php5-xdebug
Sau khi bạn thực hiện, phiên bản xdebug thích hợp sẽ được cài đặt nhưng chưa sẵn sàng để sử dụng. Sau đó, bạn sẽ cần phải kích hoạt nó. Tôi đã thấy nhiều gợi ý về cách làm điều đó, nhưng thực tế của vấn đề là PHP cần một số mô-đun để được kích hoạt cho cả máy khách và máy chủ, trong trường hợp này là Apache. Có vẻ như cách tốt nhất ở đây là sử dụng phương pháp kích hoạt mô-đun được tích hợp sẵn, được gọi là php5enmod. Cách sử dụng được mô tả ở đây .
Vấn đề số 2: Kích hoạt đúng mô-đun
Đầu tiên, bạn cần vào bên trong thư mục / etc / php5. Trong đó, bạn sẽ tìm thấy 3 thư mục, apache2, cli và mods_available. Thư mục mods_available chứa các tệp văn bản với các hướng dẫn để kích hoạt một mô-đun nhất định. Quy ước tên là [module] .ini. Hãy xem bên trong một vài trong số chúng, xem chúng được thiết lập như thế nào.
Bây giờ bạn sẽ phải tạo tệp ini của mình bên trong thư mục mods_available. Tạo một tệp có tên xdebug.ini và bên trong tệp, dán đoạn này:
[xdebug]
zend_extension = /usr/lib/php5/20121212/xdebug.so
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=localhost
xdebug.remote_port=9000
Đảm bảo rằng chỉ thị [xdebug] có mặt, chính xác như ví dụ trên. Nó là bắt buộc để mô-đun hoạt động. Trên thực tế, chỉ cần sao chép và dán toàn bộ mã, bạn sẽ trở thành một người hạnh phúc hơn theo cách đó. : D
Lưu ý: đường dẫn zend_extension rất quan trọng. Trong ví dụ này, nó đang trỏ đến phiên bản hiện tại của PHP engine, nhưng trước tiên bạn nên truy cập / usr / lib / php5 và đảm bảo rằng thư mục được đặt tên bằng số là đúng. Điều chỉnh tên thành bất cứ thứ gì bạn nhìn thấy ở đó và khi đang ở đó, hãy kiểm tra bên trong thư mục để đảm bảo xdebug.so thực sự ở đó. Nó nên được, nếu bạn đã làm mọi thứ đúng.
Bây giờ, với xdebug.ini của bạn đã được tạo, đã đến lúc kích hoạt mô-đun. Để làm điều đó, hãy mở một bảng điều khiển và nhập:
php5enmod xdebug
Nếu mọi thứ suôn sẻ, PHP đã tạo hai liên kết đến tệp này, một liên kết bên trong /etc/php5/apache2/conf.d và một liên kết bên trong /etc/php5/cli/conf.d
Khởi động lại máy chủ Apache của bạn và nhập vào bảng điều khiển:
php -v
Bạn sẽ nhận được một cái gì đó như thế này:
PHP 5.5.9-1ubuntu4.6 (cli) (built: Feb 13 2015 19:17:11)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
with Xdebug v2.3.1, Copyright (c) 2002-2015, by Derick Rethans
Điều đó có nghĩa là ứng dụng khách PHP đã đọc tệp xdebug.ini của bạn và tải mô-đun xdebug.so. Càng xa càng tốt.
Bây giờ, hãy tạo một tập lệnh phpinfo ở đâu đó trên máy chủ web của bạn và chạy nó. Đây là những gì bạn sẽ thấy, nếu mọi thứ diễn ra suôn sẻ:
Nếu bạn thấy điều này, Apache cũng đã tải mô-đun và bạn có thể đã sẵn sàng. Bây giờ chúng ta hãy xem liệu Netbeans sẽ gỡ lỗi chính xác. Tạo một tập lệnh rất đơn giản, thêm một số biến, cung cấp giá trị cho chúng và đặt điểm ngắt trên chúng. Bây giờ nhấn CTRL + F5, nhấp vào "bước vào" trên bảng điều khiển trình gỡ lỗi của bạn và xem liệu bạn có nhận được thứ gì đó như sau không:
Hãy nhớ kiểm tra cấu hình Netbeans để gỡ lỗi, trong công cụ / tùy chọn / php. Nó sẽ trông giống như sau:
Tôi hy vọng điều này làm sáng tỏ vấn đề khá mù mờ, khó hiểu này.
Lời chúc tốt nhất!
phpinfo()
báo cáo nó như là một phần mở rộng tải? Đó có phải là những gì bạn có nghĩa là "làm việc"?