MacOS Catalina 10.15에 Xdebug 설치


13

OS X 10.15에 Xdebug를 설치하려고 시도하고 다음 문제가 발생했습니다.

/private/tmp/pear/install/xdebug/xdebug.c:25:10 : 치명적인 오류 : 'php.h'파일을 찾을 수 없습니다

여기에 설명 된 것처럼이 문제를 해결하기 위해 노력 : 맥 OS 모하비에 Xdebug는 설치 - 'php.h'파일을 찾을 수 없습니다

불행히도이 디렉토리에서 헤더 파일을 찾을 수 없습니다 : /Library/Developer/CommandLineTools/Packages

OS X 10.15의 현재 헤더 파일을 얻을 수있는 아이디어가 있습니까?

답변:


28

tl; dr

Apple은 헤더 파일 /usr/includemacOS_SDK_headers_for_macOS_10.14.pkg패키지 를 제거하기로 결정했습니다 . Xdebug를 설치하려면 phpize및 에서 올바른 참조를 사용하여 Xdebug를 수동으로 컴파일해야합니다 make.

자세한 내용 은 문제솔루션에 대한 블로그 기사를 작성했습니다.


간단히 말해, 애플 /usr/include은 MacOS Catalina에서 핵무기 를 만들기 로 결정 했는데, 이는 UNIX 시스템에서 C 헤더 파일의 기본 위치였습니다. 컴파일러가 PEAR / PECL을 통해 설치하려고하면 컴파일러가 필요한 헤더 파일을 찾을 때 오류를 반환합니다 /usr/include. 따라서 해결책은 Xdebug를 수동으로 컴파일하여 Xcode에서 제공하는 헤더 파일의 실제 위치를 다른 위치에 수동으로 지정하는 것입니다.

먼저, 명령 행 도구를 포함하여 Xcode가 설치되어 있는지 확인하십시오. 다음 명령은 기본 SDK의 위치를 ​​표시합니다.

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

그러면 원하는 헤더 ( php.h)가에 있습니다 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php/main.

소스 얻기

git에서 소스 코드를 가져 와서 2.7.2를 컴파일하자 . 또는 Xdebug site 에서 소스를 다운로드 할 수 있습니다 .

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

phpize

다음으로 phpize포함 경로를 편집 할 수 있도록 복사본을 만들어야합니다 .

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

이 줄을 찾으십시오 :

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

...이 줄로 바꾸십시오.

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

실행 phpize:

./phpize

이제 다음과 같이 보일 것입니다 :

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

구성 및 구축

이제 구성 할 수 있습니다 :

./configure --enable-xdebug

... 그리고 컴파일러 플래그로 정의 된 사용자 정의 SDK 위치를 사용하여 make를 실행하십시오.

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'

몇 가지 경고가 표시 될 수 있으므로 지금은 무시하십시오. 마지막으로 다음을 실행해야합니다.

make install

이 명령은 확장명을 올바른 위치로 이동할 수 없으므로 실패합니다. SIP는이를 방지합니다. 그러나 걱정하지 마십시오. 다음 단계에서 수동으로 처리합니다. * .so 파일에 서명하므로 설치가 여전히 필요합니다.

PHP에서 지원 가능

다음으로 실행 파일을 안전한 곳으로 옮깁니다. 사용 /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

그런 다음 Xdebug를 활성화하기 위해 PHP 구성을 편집합니다. 간단히 편집 php.ini:

sudo nano /etc/php.ini

그리고 하단에 다음을 추가합니다.

[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

내장 서버를 다시 시작하여 다음을 확인하십시오.

sudo apachectl restart

그리고 마지막으로 모든 것이 잘되었는지 테스트하십시오.

php -i | grep "xdebug support"

위 명령으로 아무것도 반환하지 않으면 설치시 Xdebug를 사용할 수 없습니다. 누락 된 사항을 찾으려면 단계를 다시 수행하십시오.


편집하다

더 완벽한 수정의 결과 편집하는 것입니다 php-config --include-dir있는 수익을, /usr/include/php. 그러면 파일이나 컴파일러 플래그를 수동으로 편집하지 않고도 설치시 필요한 헤더 파일을 찾을 수 있습니다.


1
가장 귀중한 답변! 이것은 올바른 것으로 표시되어야합니다! 감사합니다!
eltomato

당신은 내 하루를
보냈습니다

이것이 문제를 해결하는 가장 좋은 방법입니다. 그것은 나를 위해 일했다. 감사합니다, 루이
라자 모하메드

1
PHP 7.4 지원을 위해서는 XDebug 2.9 (2.7.2 아님)를 설치해야합니다. 그냥 따라 이러한 설치 지침을 이후 make install이 게시물의 "활성화 지원 PHP에서"장의 모든 단계를 수행. php.ini다른 위치에 파일 이있을 수 있습니다 . 실행 php --ini파악하는 경우 편집 대신 사용중인 하나.
Dejv

나는 ./configure명령 까지 좋았습니다 . 계속 받고 있습니다 no such file or directory: ./configure. 다른 사람이 이것에 부딪 치거나 내가 운이 좋은 사람입니까? : D
cbloss793

0

brew를 사용하는 경우 PHP를 다시 설치하고 다시 연결 하여이 문제를 해결합니다.

brew reinstall php@7.3
brew link --overwrite php

작동하지 않았다, 친구.
Eric Chen

불행히도 양조 제품은 버전에 따라 예상대로 작동하지 않습니다.
jamespsterling


-2

"brew"를 사용하여 PHP를 설치 한 다음 설치된 brew의 PHP 버전과 함께 제공되는 "pecl"도구를 사용하여 Xdebug를 설치하는 것이 좋습니다.


바로 내가 한 일입니다. pecl로 Xdebug를 설치하려고 할 때 위에서 언급 한 오류가 발생합니다
Guenter

1
즉, Mac과 함께 설치된 잘못된 도구를 선택한다는 의미입니다. 제공된 맥주를 사용해야합니다.
Derick

@ Guenter는 그 힌트가 문제를 해결 했습니까? 같은 문제가 발생 brew install php했지만 여전히 같은 오류가 발생합니다.
카터 파페

@Derick에게 감사합니다. 이것은 내 조사를 해결했습니다
Guenter

1
pecl install xdebug10.15.3에서 저를 위해 일했습니다
Juanmi Sosso
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.