2010-08-10 8 views
10

Mam dziwny problem. Skonfigurowałem XDebug do profilowania aplikacji PHP, nad którą pracujemy. Wierzę, że wszystko jest poprawnie skonfigurowane, ale nie uzyskuję żadnych danych wyjściowych po uruchomieniu. Moja konfiguracja wygląda następująco:Profilowanie XDebug w PHP - nie można uzyskać wyjścia

zend_extension="/usr/local/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so 
[XDebug] 
xdebug.profiler_append = 1 
xdebug.profiler_enable = 0 (I've tried this both on and off) 
xdebug.profiler_enable_trigger = 1 
xdebug.profiler_output_dir = "/debug/xdebug/profiler_output_dir" 
xdebug.profiler_output_name = "cachegrind.out.%p" 

Wszystkie ustawienia phpinfo() dopasować się tak jak powinny. Uprawnienia w katalogu wyjściowym są teraz ustawione na 777 tylko dlatego, że mogę je przetestować. Próbowałem również używać katalogu pod public_html, ale bez powodzenia. Adres URL, którego używam do uruchamiania profilera, to:

http://example.com/my_page.php?XDEBUG_PROFILE 
-or- 
http://example.com/my_page.php?XDEBUG_PROFILE=1 

Żadne z nich nie działa. Każda pomoc byłaby WSPANIAŁA doceniona !! Ta aplikacja ma ładowanie strony 5-6 sekund i nie udało mi się jej prześledzić za pomocą kodu.

Odpowiedz

10

Skomentuj xdebug.profiler_output_dir i xdebug.profiler_output_name i zobacz, czy możesz znaleźć wyjście pod numerem /tmp/.

+0

próbował, to, ale dzięki za wejście. –

+2

Hamid, Okazuje się, że jesteś na dobrej drodze. Zapomniałem umieścić pełną ścieżkę do katalogu wyjściowego. Oto ostateczne rozwiązanie: xdebug.profiler_append = 1 xdebug.profiler_output_dir = "/ home/nazwa_użytkownika/debug/xdebug/profiler_output_dir" xdebug.profiler_output_name = "cachegrind.out% s% H.". –

+0

@John zadowolony, że to opracowany. :) –

5

Inną możliwą przyczyną tego problemu są uprawnienia do folderu o nazwie profiler_output_dir.

Dodanie uprawnienia do zapisu do grupy i właściciela rozwiązany dla mnie:

sudo chmod go+w /home/dimitris/cachegrind/ 
+1

Naprawiono też mój problem! – JohnWright

1

Także strzeżcie ograniczeń dostępu, takich jak prawa dostępu, grup, właściciel i SELinux ...

+0

Rzeczywiście. Gdyby ten sam problem z apache nie mógł być zapisany w zdefiniowanym katalogu użytkownika z powodu uprawnień –

10

Nie jest też problem z/tmp folderów na niektórych dystrybucjach, nie mogłem dostać wyjście na CentOS 7 i potem znalazłem this

Tak mam ustawione

xdebug.profiler_output_dir =/home/jirka/profile

ustawić 777 i jest ok teraz.

+1

Jest więcej informacji o tym ustawieniu 'PrivateTmp' [tutaj] (https://securityblog.redhat.com/2014/04/09/new-red -hat-enterprise-linux-7-security-feature-privatetmp /). "Ustawia nową przestrzeń nazw systemu plików dla wykonywanych procesów i montuje w niej prywatny katalog'/tmp', który nie jest współużytkowany przez procesy spoza przestrzeni nazw. Oznacza to, że procesy działające z tą flagą będą widzieć inny i unikalny '/ tmp' z jednego użytkownika i innych demonów widzi lub może uzyskać dostęp." – TachyonVortex

+0

Dzięki za to. Okazuje się, że mój OpenSUSE 13.1 ma taką samą konfigurację, a przeniesienie wyników profilera w innym miejscu rozwiązało problem. – savedario

1

Pełna ścieżka była wymagana, a nie tylko droga:

xdebug.profiler_append=1 
xdebug.profiler_output_dir ="/home/username/debug/xdebug/profiler_output_dir" 
xdebug.profiler_output_name = "cachegrind.out.%s.%H" 
+0

Uwaga: To było rozwiązanie dostarczone przez OP w ich pytaniu. – k0pernikus

Powiązane problemy