Cài đặt Xdebug trên MacOS Catalina 10.15


13

Tôi đã thử cài đặt Xdebug trên OS X 10.15 và gặp vấn đề sau:

/private/tmp/pear/install/xdebug/xdebug.c:25:10: lỗi nghiêm trọng: không tìm thấy tệp 'php.h'

Tôi đã cố gắng khắc phục sự cố như được mô tả ở đây: Cài đặt xdebug trên MacOs Mojave - không tìm thấy tệp 'php.h'

Thật không may, các tập tin tiêu đề không thể được tìm thấy trong thư mục này: /Library/Developer/CommandLineTools/Packages

Có ý tưởng nào để tôi có thể nhận các tệp tiêu đề hiện tại cho OS X 10.15 không?

Câu trả lời:


28

tl; dr

Apple quyết định loại bỏ tập tin tiêu đề trong /usr/includemacOS_SDK_headers_for_macOS_10.14.pkggói. Để cài đặt Xdebug, bạn sẽ phải biên dịch Xdebug theo cách thủ công với tham chiếu chính xác trong cả hai phpizemake.

Để biết thêm chi tiết, tôi đã viết một bài viết trên blog về vấn đềgiải pháp


Tóm lại, Apple đã quyết định nuke /usr/includetrong MacOS Catalina, đây là vị trí mặc định cho tệp tiêu đề C chưa từng có trong các hệ thống UNIX. Cố gắng cài đặt thông qua PEAR / PECL sẽ trả về lỗi vì trình biên dịch sẽ tìm tệp tiêu đề cần thiết trong /usr/include. Vì vậy, giải pháp là biên dịch Xdebug theo cách thủ công, chỉ định thủ công vị trí thực tế của các tệp tiêu đề vẫn được Xcode cung cấp, chỉ ở một vị trí khác.

Trước tiên, hãy đảm bảo Xcode được cài đặt, bao gồm các công cụ dòng lệnh. Lệnh sau sẽ hiển thị vị trí của SDK mặc định:

$ xcrun --show-sdk-path
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk

Tiêu đề bạn sẽ muốn ( php.h) sẽ xuất hiện /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php/main.

Lấy nguồn

Hãy biên dịch 2.7.2 , lấy mã nguồn từ git. Ngoài ra, bạn có thể tải xuống nguồn từ trang Xdebug .

git clone https://github.com/xdebug/xdebug.git
cd xdebug
git checkout tags/2.7.2

Phốt

Tiếp theo chúng ta cần tạo một bản sao phpizeđể có thể chỉnh sửa đường dẫn bao gồm:

cp /usr/bin/phpize .
nano ./phpize

Tìm dòng này:

includedir="`eval echo ${prefix}/include`/php"

... và thay thế nó bằng dòng này:

includedir="/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php"

Chạy phpize:

./phpize

Bây giờ bạn sẽ thấy một cái gì đó như thế này:

Configuring for:
PHP Api Version:         20180731
Zend Module Api No:      20180731
Zend Extension Api No:   320180731

Cấu hình và xây dựng

Bây giờ chúng ta có thể cấu hình:

./configure --enable-xdebug

... và chạy make bằng cách sử dụng vị trí SDK tùy chỉnh của chúng tôi được xác định là cờ trình biên dịch:

make CPPFLAGS='-I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php/main -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php/TSRM -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php/Zend -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php/ext -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php/ext/date/lib'

Có thể thấy một số cảnh báo, chỉ cần bỏ qua nó bây giờ. Cuối cùng, chúng ta sẽ cần chạy:

make install

Một lần nữa, lệnh này sẽ thất bại vì nó không thể di chuyển phần mở rộng đến đúng nơi. SIP sẽ ngăn chặn nó. Nhưng không phải lo lắng, chúng tôi sẽ xử lý việc đó bằng tay ở bước tiếp theo. thực hiện cài đặt vẫn được yêu cầu vì nó sẽ ký vào tệp * .so.

Hỗ trợ hỗ trợ trong PHP

Tiếp theo, chúng tôi di chuyển thực thi ở một nơi an toàn. Tôi sử dụng /usr/local/php/extensions.

sudo mkdir -p /usr/local/php/extensions
sudo cp /usr/lib/php/extensions/no-debug-non-zts-20180731/xdebug.so /usr/local/php/extensions

Sau đó, chúng tôi chỉnh sửa cấu hình PHP để kích hoạt Xdebug. Chỉ cần chỉnh sửa php.ini:

sudo nano /etc/php.ini

Và chúng tôi thêm vào như sau ở phía dưới:

[xdebug]
zend_extension=/usr/local/php/extensions/xdebug.so
xdebug.remote_enable=on
xdebug.remote_log="/var/log/xdebug.log"
xdebug.remote_host=localhost
xdebug.remote_handler=dbgp
xdebug.remote_port=9000

Khởi động lại máy chủ được xây dựng để đảm bảo:

sudo apachectl restart

Và cuối cùng kiểm tra mọi thứ đều ổn:

php -i | grep "xdebug support"

Nếu lệnh trên không trả về gì, thì Xdebug không có sẵn trong cài đặt của bạn. Quay trở lại các bước để tìm hiểu những gì còn thiếu.


BIÊN TẬP

Một sửa chữa đầy đủ hơn sẽ là chỉnh sửa kết quả php-config --include-dir, trả về /usr/include/php. Điều đó sẽ làm cho bất kỳ cài đặt nào tìm thấy các tệp tiêu đề cần thiết mà không phải chỉnh sửa thủ công các tệp hoặc cờ trình biên dịch.


1
Câu trả lời có giá trị nhất! Điều này nên được đánh dấu là chính xác! Cảm ơn ngài!
eltomato

BẠN TIẾT KIỆM NGÀY CỦA TÔI
ludovico

Đây là cách tốt nhất để giải quyết vấn đề. Nó làm việc cho tôi. Cảm ơn, Louis
Raja Mohammed

1
Để hỗ trợ PHP 7.4, bạn cần cài đặt XDebug 2.9 (không phải 2.7.2). Chỉ cần làm theo các hướng dẫn cài đặt này và sau khi make installthực hiện tất cả các bước của chương "Hỗ trợ kích hoạt trong PHP" của bài đăng này. Hãy nhớ rằng bạn có thể có php.initệp ở vị trí khác nhau. Chạy php --iniđể tìm ra nơi và chỉnh sửa cái đang được sử dụng thay thế.
Dejv

Tôi đã tốt cho đến khi ./configurelệnh. Tôi tiếp tục nhận được a no such file or directory: ./configure. Bất cứ ai khác gặp phải điều này hay tôi chỉ là người may mắn? : D
cbloss793

0

Nếu bạn đang sử dụng brew, tôi giải quyết điều này bằng cách cài đặt lại php và liên kết lại:

brew reinstall php@7.3
brew link --overwrite php

Không làm việc, anh bạn.
Eric Chen

Thật không may, công cụ pha chế không hoạt động như mong đợi, tùy thuộc vào phiên bản của bạn.
jamespsterling

-1

bạn có thể tìm thấy hướng dẫn chi tiết với các bản vá sẵn sàng để sử dụng trên trang web này: https://profilingviewer.com/installing-xdebug-on-catalina.html


1
Câu trả lời chủ yếu tham khảo một trang web bên ngoài nên bao gồm một bản tóm tắt thông tin để nó trở thành một nguồn chính cũng như một tài liệu tham khảo. Điều này sẽ giúp câu trả lời để đứng trước thử thách của thời gian.
Louis Charette

-2

Tôi khuyên bạn nên sử dụng "brew" để cài đặt PHP và sau đó sử dụng công cụ "pecl" đi kèm với phiên bản PHP đã cài đặt để cài đặt Xdebug.


Đó chính xác là những gì tôi đã làm. Khi thử cài đặt Xdebug với pecl, tôi gặp lỗi được đề cập ở trên
Guenter

1
Điều đó có nghĩa là nó đang chọn công cụ pecl sai - công cụ được cài đặt với máy Mac của bạn. Bạn cần đảm bảo sử dụng loại bia được cung cấp.
Derick

@Guenter đã làm gợi ý đó giải quyết vấn đề của bạn? Tôi đang gặp rắc rối tương tự và đã làm brew install phpnhưng vẫn nhận được cùng một lỗi.
Carter Pape

Cảm ơn @Derick, điều này đã giải quyết vấn đề của tôi
Guenter

1
pecl install xdebuglàm việc cho tôi dưới 10.15.3
Juanmi Sosso
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.