Ich verwende XAMPP und habe es konfiguriert, um virtuelle Hosts für jedes Projekt zu haben, das ich lokal erstelle.
In meiner php.ini habe ich xdebug aktiviert und meine Skripte funktionieren einwandfrei. Ich meine, dass jederzeit eine Warnung, ein Hinweis oder ein Fehler vom xdebug gemeldet werden.
Jetzt möchte ich den Xdebug-Profiler aktivieren, und ich habe die folgenden Änderungen in meiner php.ini vorgenommen, damit der Xdebug-Profiler die Protokolldatei generieren kann:
; xdebug.profiler_enable
; Type: integer, Default value: 0
; Enables Xdebugs profiler which creates files in the profile output directory. Those files can be
; read by KCacheGrind to visualize your data. This setting can not be set in your script with ini_set
; ().
xdebug.profiler_enable = 1
; xdebug.profiler_output_dir
; Type: string, Default value: /tmp
; The directory where the profiler output will be written to, make sure that the user who the PHP
; will be running as has write permissions to that directory. This setting can not be set in your
; script with ini_set().
xdebug.profiler_output_dir ="D:\Web Development Projects\Profile"
Ich starte meinen Apache neu, aber wenn ich meine Skripte ausführe, wird immer noch keine Datei im Ordner Profile generiert.
Nach einiger Recherche füge ich diesen Code am Ende der index.php in einer WordPress-Installation hinzu, die ich auf meinem Server habe:
echo xdebug_get_profiler_filename();
Nachdem ich mein WordPress ausgeführt habe, erhalte ich in der Fußzeile dieses Ergebnis:
D:/Web Development Projects/Profile/xdebug_profile._::1320916508_018294
aber wenn ich in den Ordner gehe
D:/Web Development Projects/Profile/
Die Datei wird dort nicht angezeigt? Irgendeine Idee ?
Ich habe vergessen zu schreiben, dass das Betriebssystem Windows ist
– KodeFor.Me
10. November 2011 um 8:35 Uhr
Zunächst müssen Sie sicherstellen, dass der Benutzer, unter dem Ihr Webserver läuft, tatsächlich Schreibrechte auf das von Ihnen angegebene Verzeichnis hat – und es muss existieren. Es ist auch möglich, dass Xdebug keine Leerzeichen in Pfaden mag, obwohl das gut funktionieren sollte, würde ich versuchen, Folgendes einzustellen:
xdebug.profiler_output_dir = "D:/Web Development Projects/Profiler"
Da das \ + Zeichen eine Escape-Sequenz sein könnte.
Lass es mich versuchen. Ich werde hier in einer Minute antworten
– KodeFor.Me
10. November 2011 um 9:08 Uhr
Ich habe gerade diese Änderung vorgenommen und immer noch nichts.
– KodeFor.Me
10. November 2011 um 9:10 Uhr
Dieses Verzeichnis muss auch beschreibbar sein
– Ben
13. Februar 2014 um 16:42 Uhr
Für mich war es eine Schreiberlaubnis, einfache Dinge, aber wir finden uns immer wieder auf der Suche nach komplexen Lösungen. Danke. 🙂
– Abhishek Dujari
15. Februar 2014 um 9:43 Uhr
Das Problem gelöst!
Das Problem wurde aufgrund des Namens der Protokolldatei generiert.
Beachten Sie, dass der Name sein sollte cachegrind Anstatt von callgrind wenn Sie etwas wie WinCacheGrind verwenden, das nur einen Dateityp erkennt.
– Der unbekannte Entwickler
1. November 2016 um 15:31 Uhr
@KodeFor.me Können Sie die gesamte Konfiguration für die Datei php.ini schreiben? Ich versuche es, aber es nützt nichts.
– Murad Shukurlu
18. Mai 2021 um 6:39 Uhr
@MuradShukurlu, das ist ein vier Jahre altes Projekt und existiert leider nicht mehr, und obendrein erinnere ich mich nicht einmal, welche Optionen ich eingestellt hatte. Nützliche Ressourcen sind hier: xdebug.profiler_output_name und Zeichenfolge xdebug.trace_output_name
– KodeFor.Me
18. Mai 2021 um 8:45 Uhr
@KodeFor.Me Danke! Ich habe das Problem gelöst, nachdem ich das Änderungsprotokoll überprüft habe.
– Murad Shukurlu
18. Mai 2021 um 10:37 Uhr
Wenn Sie Linux verwenden, überprüfen Sie, ob Sie sich nicht in PrivateTmp befinden, da sonst alles in /tmp geschrieben ist, überprüfen Sie diese Zeile, die erklärt PrivateTmp
Ich hatte ein ähnliches Problem mit Fedora Linux v.32. Das Setup war korrekt, aber ich konnte den Profiler-Dump in /tmp nicht finden.
Dies wurde durch das RedHat Linux Security Feature: PrivateTmp verursacht, das auch in Fedora 16 und neuer eingeführt wurde.
Dies bedeutet, dass Prozesse, die mit diesem Flag ausgeführt werden, ein anderes und eindeutiges /tmp sehen würden als das, das Benutzer und andere Daemons sehen oder auf das sie zugreifen können.
Ich habe vergessen zu schreiben, dass das Betriebssystem Windows ist
– KodeFor.Me
10. November 2011 um 8:35 Uhr