Page 1 of 1
Xdebug nur für einen Benutzer aktivieren
Posted: Fri 28. Nov 2025, 22:10
by space2place
Moin zusammen,
Ich hätte da mal wieder ein Problem.
Für einen Benutzer sol ich XDebug aktivieren.+
Das ist auch installiert und aktiv in PHP.
Jetzt habe ich dem Benutzer folgenden Eintrag unter "PHP => Überschreibbare Direktiven" gemacht:
Code: Select all
xdebug.mode = profile
xdebug.output_dir = /home/users/username/www/domain.tld/xdebug-cachegrinds/
Das hat aber keine Auswirkung auf die Funktionnalität. Es passiert nichts.
Erst wenn ich
in die
Code: Select all
/etc/php/8.2/mods-available/xdebug.ini
eintrage startet XDebug seine Arbeit. Nur das Problem ist das alle Benutzer und Domains fein Ihre "Cachegrinds" nach "/tmp/" und ich eben kurz vorm Herzinfarkt war, weil die Platte am zulaufen war.
Wie bekomme ich XDebug nur für dem einen Benutzer aktiviert ist?
Hab es auch mit einer .user.ini im Hauptverzeichnis probiert. Hat leider auch nichts geholfen.
Für jede Hilfe wäre ich dankbar
Gruß
Sascha Bay
Re: Xdebug nur für einen Benutzer aktivieren
Posted: Sat 29. Nov 2025, 12:38
by Fezzi
Auf die Schnelle.....
Ungeprüft, sollte aber funktionieren....
Gehe zu Benutzer → wähle den gewünschten Benutzer
Unter Domains → wähle die betreffende Domain
Klicke auf PHP-Einstellungen
Scrolle zu Benutzerdefinierte PHP-Konfiguration (php.ini Override)
Hier fügst du die Xdebug-Settings ein – zum Beispiel:
zend_extension=xdebug.so
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.client_host=127.0.0.1
xdebug.client_port=9003
Diese Einstellungen gelten dann NUR für diesen Benutzer und dessen Domain.
Re: Xdebug nur für einen Benutzer aktivieren
Posted: Mon 1. Dec 2025, 08:36
by space2place
Danke für den Hinweis.
Leider hat es keinerlei Auswirkung auf die Aktivierung
Nur wenn ich es direkt in den Mod eintrage wird es aktiv.
Der Benutzer hat PHP8.2 als Standard (Debian 12) eingestellt.
Die Einstellungen sind auch in der Config Datei vom FPM drin..
Re: Xdebug nur für einen Benutzer aktivieren
Posted: Mon 1. Dec 2025, 11:31
by Alexander
space2place wrote: ↑Fri 28. Nov 2025, 22:10
Jetzt habe ich dem Benutzer folgenden Eintrag unter "PHP => Überschreibbare Direktiven" gemacht:
Code: Select all
xdebug.mode = profile
xdebug.output_dir = /home/users/username/www/domain.tld/xdebug-cachegrinds/
Grüße,
das hilft dir jetzt zwar erstmal direkt nicht weiter, bei bei mir funktioniert es so.
Hast du denn die PHP-Info mal nach xdebug.mode und xdebug.output_dir durchsucht? Bei mir werden die Angaben gemäß der Einstellungen dort übernommen.
(Die eigentliche Funktionalität hab ich nicht getestet, nur ob die Einstellungen in der phpinfo() auftauchen.)
Re: Xdebug nur für einen Benutzer aktivieren
Posted: Mon 1. Dec 2025, 11:43
by space2place
Moin Alex.. Ja das wird mir angezeigt, aber die Dateien für den Cachgrind werden nicht erstellt.
Erst wenn ich in der Modul.ini Datei "xdebug.mode = profile" reinschreibe und den PHp Daemon restarte werden die Dateien in den Ordner geschrieben.
Nur das Problem ist das dann für alle Benutzer die Cachegrind Dateien erzeigt werden, die dann aber unter "/tmp"
Gruß
Sascha
Alexander wrote: ↑Mon 1. Dec 2025, 11:31
space2place wrote: ↑Fri 28. Nov 2025, 22:10
Jetzt habe ich dem Benutzer folgenden Eintrag unter "PHP => Überschreibbare Direktiven" gemacht:
Code: Select all
xdebug.mode = profile
xdebug.output_dir = /home/users/username/www/domain.tld/xdebug-cachegrinds/
Grüße,
das hilft dir jetzt zwar erstmal direkt nicht weiter, bei bei mir funktioniert es so.
Hast du denn die PHP-Info mal nach xdebug.mode und xdebug.output_dir durchsucht? Bei mir werden die Angaben gemäß der Einstellungen dort übernommen.
(Die eigentliche Funktionalität hab ich nicht getestet, nur ob die Einstellungen in der phpinfo() auftauchen.)
Re: Xdebug nur für einen Benutzer aktivieren
Posted: Mon 1. Dec 2025, 12:03
by Alexander
Ich benutze das normalerweise nicht, aber wenn du ein Minimalbeispiel für mich hast, das bewirkt, dass etwas in /home/users/username/www/domain.tld/xdebug-cachegrinds/ geschrieben wird, kannst du es mir gern noch einmal schicken, dann kann ich gern noch einmal testen.
Re: Xdebug nur für einen Benutzer aktivieren
Posted: Mon 1. Dec 2025, 14:32
by space2place
Gerne...
Die Domain nutzt PHP8.2 Standard unter Debian 12.
php-xdebug wurd installiert und ich aktiv.
Ich habe dem Benutzer unter PHP folgende Einträge gemacht:
Code: Select all
xdebug.mode = profile
xdebug.output_dir = /home/users/username/www/domain.tld/xdebug-cachegrinds/
Verzeichnis natürlich erstell und es gehört dem Benutzer.
Zusätzlich habe ich den den FPM8.2 Daemon restarted. Wenn ich die Domain aufrufe wird nichts geschrieben.
Der "Profiler" unter phpInfo steht auch weiterhin auf disabled.
Danach habe ich in der Datei "/etc/php/8.2/mods-available/xdebug.ini" den Eintrag
hinzugefügt und den FPM8.2 Daemon restarted. Nun werden die Cachrgrind das gewünschte Verzeichnis geschrieben.
Leider auch für alle andere Domains auf dem Server. Die schreiben Ihre Dateien aber unter "/tmp"
Gruß
Sascha
Re: Xdebug nur für einen Benutzer aktivieren
Posted: Mon 15. Dec 2025, 12:06
by space2place
@Alex
hattest Du schon mal Zeit Dir das anzusehen?
Gruß
Sascha
Re: Xdebug nur für einen Benutzer aktivieren
Posted: Mon 15. Dec 2025, 12:16
by Alexander
Komme wahrscheinlich frühstens ab Mitte der Woche dazu, sorry.
Re: Xdebug nur für einen Benutzer aktivieren
Posted: Mon 15. Dec 2025, 18:29
by space2place
Alexander wrote: ↑Mon 15. Dec 2025, 12:16
Komme wahrscheinlich frühstens ab Mitte der Woche dazu, sorry.
Alles gut.. Wollte mir nur einen aktuellen Stand erfragen.. Danke Dir
Re: Xdebug nur für einen Benutzer aktivieren [SOLVED]
Posted: Tue 16. Dec 2025, 10:34
by Alexander
Moin Sascha, hier das Ergebnis meiner Recherche:
Folgendes hab ich hier gefunden. Man beachte die grüne Box:
https://xdebug.org/docs/all_settings#mode
Also bist du leider gezwungen, den Mode zunächst global für alle Nutzer zu aktivieren. Nun stehst du ja wie bereits gemerkt vor diesem Problem:
space2place wrote:Nur das Problem ist das dann für alle Benutzer die Cachegrind Dateien erzeigt werden, die dann aber unter "/tmp"
Als Lösung dafür hab ich in /etc/php/8.2/mods-available/xdebug.ini einfach das Folgende bei output_dir eingetragen:
Code: Select all
zend_extension=xdebug.so
xdebug.mode = profile
xdebug.output_dir = /dev/null
Damit geht der Output standardmäßig nach /dev/null und wird sofort verworfen.
Nun gehst du in im KeyHelp in die PHP-Einstellungen des Benutzers, für den du Cachegrinds schreiben lassen möchtest und trägst dort für "output_dir" einen beliebigen anderen Pfad ein. Fortan wird nur für diesen Nutzer der log als Datei geschrieben, für alle anderen nicht mehr.
Code: Select all
xdebug.output_dir = "/home/users/test/www/xdebug/"
Perspektivisch sollte man wahrscheinlich in so einem Fall für alle Dev-Projekte einen eigenen Server nutzen und sie von den Produktiv-Projekten trennen, da xdebug ja trotzdem für jeden Request auf eines der Produktiv-Projekte die Cachegrinds schreibt, nur ihn halt direkt verwirft. Das sollte sich zumindest ein klein wenig negativ auf die Performance auswirken.
Re: Xdebug nur für einen Benutzer aktivieren
Posted: Tue 23. Dec 2025, 12:22
by space2place
Mega Alex...
Danke für Deine Recherche und die genannte Lösung.
Bzgl. der Last werde ich das mal beobachten und dem Kunden mitteilen...
Auf jeden Fall vielen Dank.
Wünsche Dir und dem ganze Team ein paar ruhige Feiertage.
Gruß
Sascha
Alexander wrote: ↑Tue 16. Dec 2025, 10:34
Moin Sascha, hier das Ergebnis meiner Recherche:
Folgendes hab ich hier gefunden. Man beachte die grüne Box:
Bildschirmfoto vom 2025-12-16 10-23-27.png
https://xdebug.org/docs/all_settings#mode
Also bist du leider gezwungen, den Mode zunächst global für alle Nutzer zu aktivieren. Nun stehst du ja wie bereits gemerkt vor diesem Problem:
space2place wrote:Nur das Problem ist das dann für alle Benutzer die Cachegrind Dateien erzeigt werden, die dann aber unter "/tmp"
Als Lösung dafür hab ich in /etc/php/8.2/mods-available/xdebug.ini einfach das Folgende bei output_dir eingetragen:
Code: Select all
zend_extension=xdebug.so
xdebug.mode = profile
xdebug.output_dir = /dev/null
Damit geht der Output standardmäßig nach /dev/null und wird sofort verworfen.
Nun gehst du in im KeyHelp in die PHP-Einstellungen des Benutzers, für den du Cachegrinds schreiben lassen möchtest und trägst dort für "output_dir" einen beliebigen anderen Pfad ein. Fortan wird nur für diesen Nutzer der log als Datei geschrieben, für alle anderen nicht mehr.
Code: Select all
xdebug.output_dir = "/home/users/test/www/xdebug/"
Perspektivisch sollte man wahrscheinlich in so einem Fall für alle Dev-Projekte einen eigenen Server nutzen und sie von den Produktiv-Projekten trennen, da xdebug ja trotzdem für jeden Request auf eines der Produktiv-Projekte die Cachegrinds schreibt, nur ihn halt direkt verwirft. Das sollte sich zumindest ein klein wenig negativ auf die Performance auswirken.