[英]Xdebug on macOS 10.13 with PHP 7
因此macOS High Sierra 10.13現在附帶了PHP 7.1。 雖然配置Apache我還創建了一個新的/etc/php.ini
從/etc/php.ini.default
文件,提出一定要檢查重啟動Apache在這之后正被裝載PHP,Xdebug擴展的但是版本附帶運行phpinfo();
時,macOS 10.13似乎沒有加載或顯示phpinfo();
我的php.ini肯定正在加載:
$ php -i | grep php.ini
Configuration File (php.ini) Path => /etc
Loaded Configuration File => /etc/php.ini
這是我的/etc/php.ini配置Xdebug的樣子:
[xdebug]
zend_extension = "/usr/lib/php/extensions/no-debug-non-zts-20160303/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
[更新,在這里修正了錯字...]
但是,Xdebug無法加載,並且檢查php -i
沒有結果:
$php -i | grep xdebug
PHP Warning: Method xdebug_start_function_monitor() cannot be a NULL
function in Unknown on line 0
PHP Warning: xdebug: Unable to register functions, unable to load in Unknown on line 0
Segmentation fault: 11
是的,該文件的路徑是正確的:
$ ls /usr/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so
/usr/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so*
這曾經在PHP 5上運行過,所以我希望將來有人可以為我和其他任何人提供幫助。
當我檢查我的Apache日志時,出現以下錯誤:
Failed loading /usr/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so: dlopen(/usr/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so, 9): Symbol not found: _xdebug_monitored_function_dtor
Referenced from: /usr/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so
Expected in: flat namespace
in /usr/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so
在尋找如何解決此錯誤方面,我沒有取得進展:
Symbol not found: _xdebug_monitored_function_dtor
好的,所以我終於自己運行了它,它運行完美! 我假設macOS High Sierra隨附的xdebug二進制文件(位於: /usr/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so
)與PHP7的新Zend引擎不兼容。
因此,我從xdebug網站下載了最新資源,並執行了以下操作:
phpize
為新的Zend引擎配置構建; ./configure
make
現在,新的二進制文件位於modules/xdebug.so
但是,macOS系統完整性保護(SIP)將阻止您覆蓋/usr/lib/php/extensions/
下的xdebug.so
。 我不想禁用此功能,因此我在/usr/local/lib/php/extensions/
下創建了一個新目錄路徑,並將新二進制文件復制到該位置。 我不確定該目錄是否是放置它的最佳位置,或者這不是一個好習慣,但是對我有用。
最后,我重新配置了php.ini以使用新的二進制文件,並且一切正常!
為了安裝它,您必須具有xcode命令行工具。
因此,您需要運行:
xcode-select --install
然后,您需要安裝autoconf:
brew install autoconf
然后,您必須從此處下載代碼。 之后,您必須在源代碼的文件夾中運行:
phpize
./configure
make
sudo cp modules/xdebug.so /usr/local/php/extensions
(如果目錄不存在,請創建它) 最后在php.ini中添加
zend_extension=/usr/local/php/extensions/xdebug.so
之后,您可以在php.ini中啟用xdebug並重新啟動apache
sudo apachectl restart
您在“ zend_extention”中輸入了錯誤。 這應該是zend_extension。 而且我認為完整路徑是不必要的zend_extension = xdebug.so應該足夠了
對於遲到此晚會的任何人,問題的最初嘗試似乎在macOS 10.13.6中都可以正常工作
大家在嘗試在Mac上安裝xDebug時遇到錯誤的人都好。
錯誤:未知類型名稱'uint64_t'
您的本地/ bin / include中有文件導致此錯誤。 通過刪除它們,您可以擺脫錯誤。 不過,您可能必須重新安裝啤酒。
如果在Mac OS X mojave上安裝了帶有多個PHP版本(即7.1、7.2和7.3)的brew,則可以執行以下操作:
使用brew brew install autoconf
。
更改為要Xdebug的PHP版本,運行brew unlink php@7.1 && brew link --force --overwrite php
。 這將從PHP 7.1切換到PHP 7.3。
從xdebug網站下載最新的Xdebug源。
提取Xdebug tar,並導航到提取的目錄,您將在其中查看所有文件。
運行phpize
來配置新的Zend引擎的構建。
運行./configure
。
運行make
。
Xdebug擴展名xdebug.so
將在modules
目錄中進行編譯。
在/usr/local/lib/php/7.3.1/extensions/
下創建一個新的目錄路徑,並將xdebug.so
復制到該位置。 這里, 7.3.1
是我之前切換的當前版本,請更改此版本以匹配您的PHP版本。
在編輯器中打開php.ini
,然后輸入zend_extension="/usr/local/lib/php/7.3.1/extensions/xdebug.so"
然后保存更改。
運行php -v
,它將顯示Xdebug已正確配置。
如果要在另一個PHP版本上配置Xdebug,則只需從步驟2一直重復到11。如先前的文章所述,您無需在Mac OS X上禁用/啟用系統完整性保護。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.