[英]Installation of Xdebug on MacOS Catalina 10.15
我嘗試在 OS X 10.15 上安裝 Xdebug 並遇到以下問題:
/private/tmp/pear/install/xdebug/xdebug.c:25:10:致命錯誤:找不到“php.h”文件
我試圖解決這里描述的問題: 在 MacOs Mojave 上安裝 xdebug - 'php.h' 文件未找到
不幸的是,在此目錄中找不到 header 文件: /Library/Developer/CommandLineTools/Packages
有什么想法可以獲取 OS X 10.15 的當前 header 文件嗎?
對於只希望在 MacOS 上支持 xdebug 的任何人,使用 PHP 的內置版本時,不需要此答案中的大多數說明。 在做任何事情之前,您應該檢查xdebug.so
是否已經存在於/usr/lib/php/extensions/no-debug-non-zts-20180731/
中,默認情況下應該存在。 如果是這樣,您可以跳到此答案的 PHP 部分中的已啟用支持。
使用 Homebrew 也是您可以接受的解決方案( 並且還可以防止其他問題)。
對於希望在 MacOS 上實際構建二進制文件並獲得 header 錯誤的任何其他人,完整的答案適合您。 它還直接回答 OP 問題。 請注意,從源代碼構建 xdebug 並實際嘗試使用帶有內置 PHP 的xdebug.so
版本應該會導致“代碼簽名”錯誤。 如這里和這里所述,唯一真正的解決方案是編譯和使用您自己的 PHP 實例而不是內置實例。 在任何情況下,使用 Homebrew 都會更容易。
Apple 決定刪除/usr/include
和macOS_SDK_headers_for_macOS_10.14.pkg
package 中的頭文件。 要安裝 Xdebug,您必須在phpize
和make
中使用正確的引用手動編譯 Xdebug。
長話短說,Apple 決定在 MacOS Catalina 中刪除/usr/include
,它一直是 C header 文件在 Z15395D0642F86C5992ABBCA5E56E2B2Z9 系統中的默認位置嘗試通過 PEAR / PECL 安裝將返回錯誤,因為編譯器將在/usr/include
中查找必要的頭文件。 所以解決方法是手動編譯Xdebug,手動指定header文件的實際位置,這些文件還是Xcode提供的,只是在不同的位置。
首先,確保安裝了 Xcode,包括命令行工具。 以下命令將顯示默認 SDK 的位置:
$ xcrun --show-sdk-path
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk
然后,您想要的 header ( php.h
) 將位於/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php/main
讓我們編譯2.7.2 ,從 git 獲取源代碼。 或者,您可以從Xdebug 站點下載源代碼。
git clone https://github.com/xdebug/xdebug.git
cd xdebug
git checkout tags/2.7.2
接下來我們需要復制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 會阻止它。 但不用擔心,我們將在下一步手動處理。 make install 仍然是必需的,因為它將簽署 *.so 文件。
接下來,我們將可執行文件移動到安全的地方。 我使用/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
然后我們編輯 PHP 配置以啟用 Xdebug。 只需編輯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 在您的安裝中不可用。 Go 返回步驟以找出缺少的內容。
注意:更完整的修復方法是編輯php-config --include-dir
的結果,它返回/usr/include/php
。 這將使任何安裝都能找到必要的 header 文件,而無需手動編輯文件或編譯器標志。
如果您使用的是 brew,我通過重新安裝 php 並重新鏈接來解決此問題:
brew reinstall php@7.3
brew link --overwrite php
當我嘗試在 MacOS Catalina 10.15 中安裝 xdebug 時出現錯誤:
pecl install xdebug-3.0.1
錯誤:
/private/tmp/pear/install/xdebug/xdebug.c:25:10: fatal error: 'php.h' file not found
這是由於 Apple 決定刪除 /usr/include 中的頭文件,就像您在其他答案中看到的那樣。
然后我將配置添加到.bash_profile,在控制台中執行這些行:
echo 'export PATH="/usr/local/opt/php@7.3/bin:$PATH"' >> ~/.bash_profile
echo 'export PATH="/usr/local/opt/php@7.3/sbin:$PATH"' >> ~/.bash_profile
export LDFLAGS="-L/usr/local/opt/php@7.3/lib"
export CPPFLAGS="-I/usr/local/opt/php@7.3/include"
source ~/.bash_profile
之后,您可以嘗試使用 pecl 再次安裝 xdebug:
pecl install xdebug-3.0.1
注意:以前我用“brew”安裝了 PHP 7.3。 您應該調整 php 和 xdebug 版本,在上面的行中,添加您喜歡的版本。
我建議你使用“brew”安裝 PHP,然后使用安裝版 brew 的 PHP 附帶的“pecl”工具安裝 Xdebug。
您可以在此站點上找到帶有即用型補丁的詳細說明: https://profilingviewer.com/installing-xdebug-on-catalina.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.