webentwicklung-frage-antwort-db.com.de

XDebug für installieren PHP mit XAMPP auf dem Mac

Ich habe einen Mac mit einer neuen OSX Mojave-Installation. Ich habe XAMPP (7.3) heruntergeladen und installiert. Der lokale Apache-Webserver funktioniert und das PHPInfo (), das ich aus dem Dashboard bekomme, zeigt alle korrekten Informationen für die php.ini-Datei an, die /Applications/XAMPP/xamppfiles/etc/php.ini ist. 

Ich habe eine Kopie der PHPInfo mitgenommen und in den Assistenten eingefügt: 

https://xdebug.org/wizard.php

Die Anweisungen sehen einfach aus. Ich musste zuerst homebrew verwenden, um autoconf zuerst zu installieren.

Dann konnte ich die Datei xdebug-2.6.1.tgz im Ordner/Applications/XAMPP/xamppfiles/herunterladen und entpacken.

Ich habe meine $ PATH-Variable geändert, damit/Applications/XAMPP/xamppfiles/bin der erste Pfad ist, der durchsucht wird, damit die korrekte phpize ausgeführt wird.

Ich habe in den Ordner /Applications/XAMPP/xamppfiles/xdebug-2.6.1 gewechselt und phpize ausgeführt, dann habe ich ./configure ausgeführt. Alles schien gut zu laufen, ohne Fehler wahrgenommen zu haben.

Aber dann bekam ich Fehler, als ich den Befehl "make" ausgeführt habe. Hier ist die Ausgabe, die ich bekam:

> Terrys-MacBook-Pro:xdebug-2.6.1 terry$ make /bin/sh
> /Applications/XAMPP/xamppfiles/xdebug-2.6.1/libtool --mode=compile cc 
> -I. -I/Applications/XAMPP/xamppfiles/xdebug-2.6.1 -DPHP_ATOM_INC -I/Applications/XAMPP/xamppfiles/xdebug-2.6.1/include -I/Applications/XAMPP/xamppfiles/xdebug-2.6.1/main -I/Applications/XAMPP/xamppfiles/xdebug-2.6.1 -I/Applications/XAMPP/xamppfiles/include/php -I/Applications/XAMPP/xamppfiles/include/php/main -I/Applications/XAMPP/xamppfiles/include/php/TSRM -I/Applications/XAMPP/xamppfiles/include/php/Zend -I/Applications/XAMPP/xamppfiles/include/php/ext -I/Applications/XAMPP/xamppfiles/include/php/ext/date/lib  -DHAVE_CONFIG_H  -g -O2   -c /Applications/XAMPP/xamppfiles/xdebug-2.6.1/xdebug_compat.c -o
> xdebug_compat.lo   cc -I.
> -I/Applications/XAMPP/xamppfiles/xdebug-2.6.1 -DPHP_ATOM_INC -I/Applications/XAMPP/xamppfiles/xdebug-2.6.1/include -I/Applications/XAMPP/xamppfiles/xdebug-2.6.1/main -I/Applications/XAMPP/xamppfiles/xdebug-2.6.1 -I/Applications/XAMPP/xamppfiles/include/php -I/Applications/XAMPP/xamppfiles/include/php/main -I/Applications/XAMPP/xamppfiles/include/php/TSRM -I/Applications/XAMPP/xamppfiles/include/php/Zend -I/Applications/XAMPP/xamppfiles/include/php/ext -I/Applications/XAMPP/xamppfiles/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /Applications/XAMPP/xamppfiles/xdebug-2.6.1/xdebug_compat.c 
> -fno-common -DPIC -o .libs/xdebug_compat.o /Applications/XAMPP/xamppfiles/xdebug-2.6.1/xdebug_compat.c:56:71:
**> error: too few arguments to function call, expected 6, have 5**
>         return zend_get_zval_ptr(op_type, node, zdata, &should_free, BP_VAR_R);
>                ~~~~~~~~~~~~~~~~~                                             ^
> /Applications/XAMPP/xamppfiles/include/php/Zend/zend_execute.h:330:1:
> note: 'zend_get_zval_ptr' declared here ZEND_API zval
> *zend_get_zval_ptr(const zend_op *opline, int op_type, const znode_op *node, const zend_execute_data *execute_data, zend_free_op *should_free, int type); ^ /Applications/XAMPP/xamppfiles/include/php/main/php_config.h:9:19:
> note: expanded from macro 'ZEND_API'
> # define ZEND_API __attribute__ ((visibility("default")))
>                   ^ /Applications/XAMPP/xamppfiles/xdebug-2.6.1/xdebug_compat.c:194:88:
> error: too few arguments to function call, expected 9, have 8
>         php_setcookie(name_s, value_s, expires, path_s, domain_s, secure, url_encode, httponly);
>         ~~~~~~~~~~~~~                                                                         ^ /Applications/XAMPP/xamppfiles/include/php/ext/standard/head.h:40:1:
> note: 'php_setcookie' declared here PHPAPI int
> php_setcookie(zend_string *name, zend_string *value, time_t expires,
> zend_string *path, zend_string *domain, int secure, int httponly,
> zend_string *samesite, int url_encode); ^
> /Applications/XAMPP/xamppfiles/include/php/main/php.h:72:18: note:
> expanded from macro 'PHPAPI'
> #               define PHPAPI __attribute__ ((visibility("default")))
>                               ^ 2 errors generated. make: *** [xdebug_compat.lo] Error 1

Der erste Fehler, den ich im Befehl "make" sehe, ist "> error: zu wenige Argumente für den Funktionsaufruf, erwartete 6, haben 5".

Ich habe keine Ahnung, wohin ich gehen soll. Die endlosen Dokumente, die ich gelesen habe, scheinen entweder für PC oder für PHP 5 zu sein. 

6
TBone

Dafür gibt es einen Fehler. Der Link lautet daher: https://bugs.xdebug.org/view.php?id=1593

Was beschreibt, dass Sie Xdebug 2.7.0beta1 für jetzt verwenden müssen.

7
Hannibal

Hannibal ist richtig, aber seine Antwort ist etwas knapp, daher möchte ich etwas näher darauf eingehen.

Dies ist ein XDebug-Fehler für PHP 7.3.x, daher müssen Sie XDebug 2.7.0beta1 installieren:

$ pecl install xdebug-2.7.0beta1

Seit ich die neueste PHP -Version mit Homebrew installiert habe, hat die XDebug-Installation tatsächlich zwei mkdir()-Fehler ausgelöst. Dies liegt daran, dass im Homebrew-Verzeichnis PHP bereits ein pecl-Symlink vorhanden ist.

Zuerst wollte ich das überprüfen, also lief ich $ ls -al /usr/local/Cellar/php/<YOUR_PHP_VERSION_NUMBER>

Wenn Sie Zweifel an Ihrer PHP -Version haben, sollte diese im pecl-Installationsprotokoll enthalten sein und neben den mkdir()-Fehlern aufgeführt sein.

Nachdem ich bestätigt hatte, dass dort bereits ein Symlink vorhanden war, entfernte ich ihn einfach:

$ rm /usr/local/Cellar/php/<YOUR_PHP_VERSION_NUMBER>/pecl

Nachdem ich das getan hatte, führte ich die Installation erneut aus und es funktionierte reibungslos.

Natürlich zeigte $ php --ini Fehler, so dass ich PHP richtig konfigurieren musste. Gabor Javorsky schrieb tatsächlich einen großartigen Artikel, in dem beschrieben wird, wie XDebug korrekt geladen wird und es für mich perfekt funktioniert hat. Siehe Schritt 2 in seinem Artikel hier: https://javorszky.co.uk/2018/05/03/getting-xdebug-working-on-php-7-2-und-homebrew/ .

Vergessen Sie nicht, PHP neu zu laden, nachdem Sie Ihre Konfiguration angepasst haben.

$ brew services stop [email protected] && brew services start [email protected]

Danach sollte $ php --ini keine Fehler anzeigen!

0
cfx