[xcode] MacOS Catalina 10.15에 Xdebug 설치

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의 현재 헤더 파일을 얻을 수있는 아이디어가 있습니까?



답변

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. 그러면 파일이나 컴파일러 플래그를 수동으로 편집하지 않고도 설치시 필요한 헤더 파일을 찾을 수 있습니다.


답변

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

brew reinstall php@7.3
brew link --overwrite php


답변

이 사이트에서 패치를 사용할 준비가 된 자세한 지침을 찾을 수 있습니다. https://profilingviewer.com/installing-xdebug-on-catalina.html


답변

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


답변