Views: 1551
Mục tiêu
Cài đặt thành công Xdebug trên MacOS Homebrew, và giải pháp cho một vài trường hợp bị lỗi trong lúc cài đặt như:
- ./configure: No such file or directory
- “config.h” file not found
- Error: listen EADDRINUSE :::9000
Yêu cầu
Đã cài sẵn môi trường LEMP stack với Homebrew.
Triển khai
Cài đặt xcode-select
, đây là công cụ hỗ trợ các lệnh command line trên MacOS do Apple cung cấp:
xcode-select --install
Check thông tin phiên bản PHP đang sử dụng trên máy, sử dụng lệnh phpinfo()
để in ra web browser

Copy nội dung phpinfo()
đã được render ra trên web browser vào khung textbox tại link này. Sau đó submit.
***Lưu ý: copy nội dung in trên web browser, chứ không phải copy raw HTML.

Sau khi submit nội dung phpinfo()
, tool trên sẽ tự động generate ra các bước hướng dẫn cài đặt phiên bản Xdebug phù hợp:


Thực hiện theo các bước hướng dẫn bên trên, đầu tiên download source xdebug-2.7.0.tgz .
Kế đến, cài đặt package autoconf
hỗ trợ việc build file từ source:
brew install autoconf
Hoặc nếu lệnh trên bị lỗi, dùng lệnh dưới này:
brew reinstall autoconf
Tiếp theo, giải nén file:
tar -xvzf xdebug-2.7.0.tgz
Di chuyển vào thư mục vừa được giải nén:
cd xdebug-2.7.0
Tiếp đến, chạy lần lượt các command sau:
sudo /usr/local/bin/phpize
sudo autoconf
./configure
sudo make install
Sau khi chạy xong, file modules/xdebug.so
sẽ được tạo ra, chúng ta cần copy file này vào vị trí thư mục thực thi của php:
cp modules/xdebug.so /usr/local/lib/php/pecl/20170718
Tiếp theo là thêm nội dung config vào file php.ini
.
Trước tiên cần check xem vị trí file php.ini đang được thực thi ở đâu:
php -i | grep php.ini

Mở file lên, di chuyển đến cuối file để thêm nội dung config cho Xdebug:
sudo vi /usr/local/etc/php/7.2/php.ini
Thêm vào cuối file nội dung sau:
1 2 3 4 5 |
zend_extension=/usr/local/lib/php/pecl/20170718/xdebug.so xdebug.remote_enable = 1 xdebug.remote_autostart = 1 xdebug.remote_port="9000" xdebug.remote_host="localhost" |
Khởi động lại php-fpm
service:
brew services restart php
Và … Done!
Trong quá trình cài đặt, sẽ có thể xảy ra một vài sự cố ngoài ý muốn, mình cũng đã chuẩn bị cho cases này, các bạn có thể tham khảo giải pháp ở mục bên dưới.
Xử lý sự cố (nếu có) trong quá trình cài đặt
Issue 1: ./configure: No such file or directory
Lỗi này xảy ra do trên máy thiếu package autoconf
, để khắc phục các bạn chỉ cần cài đặt package này là okie:
brew install autoconf
Nếu chạy lệnh trên bị lỗi, thì chạy lệnh dưới này:
brew reinstall autoconf
Issue 2: “config.h” file not found
Lỗi này có liên quan đến Issue 1 ở trên, do quá trình build files bằng lệnh ./configure
bị lỗi không tạo được file config.h
Để khắc phục, các bạn cần thực hiện theo các bước sau:
Cài lại xcode-select:
xcode-select --install
Xoá thư mục “xdebug-2.7.0”, và giải nén lại từ file xdebug-2.7.0.tgz đã download về ở bước cài đặt trên:
sudo rm -fr xdebug-2.7.0
Giải nén lại file xdebug-2.7.0.tgz
đã download:
tar -xvzf xdebug-2.7.0.tgz
Di chuyển vào thư mục xdebug-2.7.0 vừa giải nén:
cd xdebug-2.7.0
Chạy theo thứ tự các command sau để build lại file modules/xdebug.so
từ source:
sudo /usr/local/bin/phpize
sudo autoconf
./configure
sudo make install
Done.
Issue 3: Error: listen EADDRINUSE :::9000
Lỗi trên xảy ra là do có một process nào đó đang sử dụng port :9000 của xdebug, giải pháp là tìm và kill process đó.
Tìm xem process nào đang chiếm dụng port này:
sudo lsof -nP -iTCP:9000| grep LISTEN
Ví dụ, mình tìm ra được process đang chiếm là “php-fpm” không thuộc user mình đang đăng nhập quản lý, nên sẽ kill hết các process có tên trên:
sudo killall "php-fpm"
Các bạn cứ kill đến khi thấy user đang kiểm soát là chính tên user các bạn đang đăng nhập trên máy là được.

Vì mình đang login dưới user name là “zaczac”, nên kill đến đây đã là hoàn tất.
Tham khảo
- xcode-select: https://macops.ca/developer-binaries-on-os-x-xcode-select-and-xcrun/
- Setup php & xdebug with homebrew: https://medium.com/@romaninsh/install-php-7-2-xdebug-on-macos-high-sierra-with-homebrew-july-2018-d7968fe7e8b8
- Why can’t run ./configure: https://stackoverflow.com/questions/31913844/how-to-run-configure-to-compile-an-application-on-mac-os