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