Das mit dem System gelieferte PHP verfügt jedoch nur über grundlegende Konfigurationen. Wenn Sie PHP entwickeln möchten, ist Xdebug dennoch erforderlich. Hier finden Sie eine Zusammenfassung, wie Sie das mit dem System gelieferte PHP in macOS hinzufügen Hohe Sierra. [Empfohlen: PHP7-Tutorial]
Grundlegende Umgebung (macOS- und PHP-Informationen)macOS High Sierra: v10.13.3PHP: v7.1.7
- Installieren Sie Xdebug
- Xdebug offizielle Website-Installation Dokumentation Es gibt eine von MAC empfohlene Methode. Da das System mit PHP
geliefert wird, müssen Sie bei der Auswahl das Installationspaket php71-xdebug auswählen.
Da außerdem php71-xdebug
in brew vonphp71 abhängt, wird empfohlen, den Parameter --without-homebrew-php
hinzuzufügen, damit brew das ignoriert Installation
. brew install php71-xdebug --without-homebrew-php
phpize
grep: /usr/include/php/main/php.h: No such file or directory
grep: /usr/include/php/Zend/zend_modules.h: No such file or directory
grep: /usr/include/php/Zend/zend_extensions.h: No such file or directory
Configuring for:
PHP Api Version:
Zend Module Api No:
Zend Extension Api No:
phpize
nicht ordnungsgemäß verwendet wird zur Vorbereitung In Bezug auf die Kompilierungsumgebung der PHP-Erweiterungsbibliothek sollte das mit dem System gelieferte PHP theoretisch phpize
haben, aber es ist nicht in /usr/include/php/* zu finden code>. Bei der Suche nach <code>/usr/include
wurde festgestellt, dass dieses Verzeichnis überhaupt nicht existiert. --without-homebrew-php
这个参数,这样的话brew就会忽略安装php71。
sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include /usr/include
不过这个时候,或许你会碰到下面这样的报错:
ln: /usr/include: Operation not permitted
提示缺失依赖,从而导致phpize
无法正常工作,phpize
是用来准备 PHP 扩展库的编译环境的,理论上系统自带的PHP应该是有phpize
的,但是没有在/usr/include/php/*
里面找到它需要的模块,并且检索/usr/include
时发现这个目录根本不存在。
Google了一圈,解决问题,就需要在/usr/include
中补全相关的内容,在OSX v10.10以前系统,需要手动做软链来解决:
xcode-select --install
但是v10.11以后的系统重写了安全策略,所以会遇到权限问题(sudo
也不行):
brew install php71-xdebug --without-homebrew-php
不过好在Apple为开发人员准备了Xcode,这是一个很强大的工具,但是体积也很大(下载安装有点慢),而一般我们只需要它提供的Command Line Tools就够了,上面的问题,其实只要安装Command Line Tools就可以解决:
To finish installing xdebug for PHP 7.1: * /usr/local/etc/php/7.1/conf.d/ext-xdebug.ini was created, do not forget to remove it upon extension removal. * Validate installation via one of the following methods: * * Using PHP from a webserver: * - Restart your webserver. * - Write a PHP page that calls "phpinfo();" * - Load it in a browser and look for the info on the xdebug module. * - If you see it, you have been successful! * * Using PHP from the command line: * - Run `php -i "(command-line 'phpinfo()')"` * - Look for the info on the xdebug module. * - If you see it, you have been successful!
接下来,跟着提示做,安装、同意协议...
等待安装结束以后,再用 brew 来安装 php71-xdebug:
[xdebug] zend_extension="/usr/local/opt/php71-xdebug/xdebug.so" xdebug.remote_enable = 1 xdebug.remote_autostart = 1 xdebug.remote_connect_back = 1 xdebug.remote_port = 9000 xdebug.scream = 0 xdebug.show_local_vars = 1
一切结束以后,brew会给出提示:
# 关闭php-fpm sudo killall php-fpm # 启动php-fpm sudo php-fpm
开启PHP的Xdebug
经过上面步骤,系统里面是有Xdebug了,但是在php.ini
配置文件中不一定有,因此需要手动添加Xdebug的配置项:
xdebug ... xdebug.remote_autostart => On => On xdebug.remote_connect_back => On => On xdebug.remote_cookie_expire_time => 3600 => 3600 xdebug.remote_enable => On => On xdebug.remote_handler => dbgp => dbgp xdebug.remote_host => localhost => localhost xdebug.remote_log => no value => no value xdebug.remote_mode => req => req xdebug.remote_port => 9000 => 9000 xdebug.remote_timeout => 200 => 200 xdebug.scream => Off => Off ...
然后就是重启php-fpm
:
[XDebug] xdebug.remote_enable = 1 xdebug.remote_autostart = 1
运行php -i "(command-line 'phpinfo()')" | grep xdebug
后,你就可以看到关于Xdebug的配置内容了:
Visual Studio Code - PHP Debug
VSCode是目前最流行的开发工具之一,虽然轻量,但是对标各类IDE毫不逊色,微软良心之作,通过安装不同的插件可以扩展它的能力,其中有一款 PHP Debug 的插件,可以作为Xdebug的桥梁,方便直接通过Xdebug调试PHP,官方的描述十分贴切:
PHP Debug Adapter for Visual Studio Code
官网的指导也写的相当不错:
Install XDebug
I highly recommend you make a simpletest.php
file, put aphpinfo();
statement in there, then copy the output and paste it into the XDebug installation wizard. It will analyze it and give you tailored installation instructions for your environment.
In short:
- On Windows: Download the appropiate precompiled DLL for your PHP version, architecture (64/32 Bit), thread safety (TS/NTS) and Visual Studio compiler version and place it in your PHP extension folder.
- On Linux: Either download the source code as a tarball or clone it with git, then compile it.
- Configure PHP to use XDebug by adding
Um das Problem zu lösen, müssen Sie nach der Suche bei Google den relevanten Inhalt inzend_extension=path/to/xdebug
to your php.ini.
The path of your php.ini is shown in yourphpinfo()
/usr/include
vervollständigen. In Systemen vor OSX v10.10 müssen Sie manuell einen Softlink erstellen, um das Problem zu lösen Problem:- rrreee
Allerdings hat das System nach v10.11 die Sicherheitsrichtlinie neu geschrieben, sodass Sie auf Berechtigungsprobleme stoßen werden (
rrreee🎜Aber glücklicherweise hat Apple Xcode dafür vorbereitet Entwickler, das ist ein sehr leistungsfähiges Tool, aber es ist auch sehr umfangreich (Download und Installation sind etwas langsam), und im Allgemeinen benötigen wir nur die 🎜Befehlszeilentools🎜, die es bereitstellt. Tatsächlich kann das oben genannte Problem dadurch gelöst werden Ich installiere gerade die 🎜Befehlszeilentools🎜: 🎜 rrreee🎜Folgen Sie als Nächstes den Anweisungen, installieren Sie und stimmen Sie der Vereinbarung zu ...sudo
funktioniert nicht):
🎜🎜Warten Sie, bis die Installation abgeschlossen ist, und verwenden Sie dann 🎜brew🎜 zur Installation 🎜php71-xdebug🎜:🎜rrreee🎜 Nachdem alles abgeschlossen ist, wird brew ein Tipp gegeben: 🎜rrreee 🎜🎜Xdebug in PHP aktivieren🎜🎜🎜Nach den obigen Schritten ist Xdebug im System vorhanden, aber möglicherweise nicht in derphp.ini
Konfigurationsdatei, daher müssen Sie das Xdebug-Konfigurationselement manuell hinzufügen: 🎜rrreee 🎜Dann starten Siephp-fpm
neu: 🎜rrreee🎜Nach dem Ausführen vonphp -i "(Befehlszeile 'phpinfo() ')" | grep xdebug
, Sie können sehen, dass es jetzt an der Zeit ist, Xdebug zu konfigurieren: 🎜rrreee🎜🎜Visual Studio Code - PHP Debug🎜🎜🎜VSCode ist derzeit eines der beliebtesten Entwicklungstools. Obwohl es leichtgewichtig ist Es ist allen Arten von IDEs nicht unterlegen, seine Fähigkeiten können durch die Installation verschiedener Plug-Ins erweitert werden. Darunter ist das 🎜PHP Debug🎜 Plug-in, das als Brücke zu Xdebug verwendet werden kann um das Debuggen von PHP direkt über Xdebug zu erleichtern. Die offizielle Beschreibung ist sehr passend: 🎜PHP Debug Adapter for Visual Studio Code🎜Die Anweisungen auf der offiziellen Website sind auch recht gut: 🎜🎜 🎜Installieren Sie XDebug
🎜Ich empfehle Ihnen dringend, eine einfachetest.php code>-Datei zu erstellen, dort eine <code>phpinfo();
-Anweisung einzufügen und diese dann zu kopieren Geben Sie es aus und fügen Sie es in den XDebug-Installationsassistenten ein. Dieser analysiert es und gibt Ihnen maßgeschneiderte Installationsanweisungen für Ihre Umgebung. em>🎜
Kurz gesagt:🎜🎜🎜Unter Windows: Laden Sie die entsprechende vorkompilierte DLL herunter Geben Sie Ihre PHP-Version, Architektur (64/32 Bit), Thread-Sicherheit (TS/NTS) und Visual Studio-Compiler-Version ein und legen Sie sie in Ihrem PHP-Erweiterungsordner ab.🎜🎜Unter Linux: Laden Sie den Quellcode entweder als Tarball herunter oder klonen Sie ihn mit git, dann kompilieren Sie es.🎜🎜🎜🎜Konfigurieren Sie PHP für die Verwendung von XDebug, indem Siezend_extension=path/to/xdebug zu Ihrer php.ini hinzufügen.<br>Der Pfad Ihrer php.ini wird angezeigt in Ihrer <code>phpinfo()
-Ausgabe unter „Geladene Konfigurationsdatei“.🎜🎜🎜Aktivieren Sie Remote-Debugging in Ihrer php.ini:🎜[XDebug] xdebug.remote_enable = 1 xdebug.remote_autostart = 1Nach dem Login kopierenNach dem Login kopierenThere are other ways to tell XDebug to connect to a remote debugger than
remote_autostart
, like cookies, query parameters or browser extensions. I recommendremote_autostart
because it "just works". There are also a variety of other options, like the port (by default 9000), please see the XDebug documentation on remote debugging for more information.- If you are doing web development, don't forget to restart your webserver to reload the settings
- Verify your installation by checking your
phpinfo()
output for an XDebug section.
这里需要注意的是它推荐开启Xdebug配置项中的remote_autostart
这一项。
好了,经过上面的操作,你应该可以跟Demo里面一样在VSCode中调试PHP了。