2010-08-10 4 views
10

Ho uno strano problema. Ho configurato XDebug per profilare un'applicazione PHP su cui stiamo lavorando. Credo che tutto sia impostato correttamente ma non ottengo output quando lo eseguo. La mia configurazione è simile al seguente:Profilazione XDebug in PHP - impossibile ottenere output

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" 

Tutte le impostazioni phpinfo() corrispondono come dovrebbero. Le autorizzazioni per la directory di output sono ora impostate su 777, così posso verificarlo. Ho provato a usare una directory anche sotto public_html ma non ho avuto fortuna. L'URL che sto usando per lanciare il profiler è:

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

Né opere. Qualsiasi aiuto sarebbe molto apprezzato!! Questa app ha un tempo di caricamento della pagina di 5-6 secondi e non è stato possibile rintracciarla tramite codice.

risposta

10

Commenta xdebug.profiler_output_dir e xdebug.profiler_output_name e vedere se è possibile trovare l'output sotto /tmp/.

+0

provato, che ma grazie per l'ingresso. –

+2

Hamid, Scopre che eri sulla buona strada. Mi ero dimenticato di inserire il percorso completo nella directory di output. Ecco la soluzione finale: xdebug.profiler_append = 1 xdebug.profiler_output_dir = "/ home/nomeutente/debug/xdebug/profiler_output_dir" xdebug.profiler_output_name = "cachegrind.out% s% H.". –

+0

@ John contento che allenato. :) –

5

Un'altra possibile causa di questo problema sono le autorizzazioni sulla cartella di profiler_output_dir.

Aggiunta di permessi di scrittura al gruppo e il proprietario ha risolto il problema per me:

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

risolto anche il mio problema! – JohnWright

1

Inoltre, fate attenzione di limitazioni di accesso, come ad esempio i diritti di accesso, gruppi, proprietario e SElinux ...

+0

Infatti. Aveva lo stesso problema con Apache non essere in grado di scrivere nella directory utente definita a causa delle autorizzazioni –

10

Ci è anche problema con le cartelle/tmp su alcune distribuzioni, ho potuto ottenere un output su CentOS 7 e poi ho trovato this

Così, ho impostato

xdebug.profiler_output_dir =/home/Jirka/profilo

impostare 777 e il suo ok ora.

+1

Ci sono ulteriori informazioni su quell'impostazione 'PrivateTmp' [qui] (https://securityblog.redhat.com/2014/04/09/new-red -hat-enterprise-linux-7-sicurezza-funzione-privatetmp /). "Crea un nuovo spazio dei nomi del file system per i processi eseguiti e monta al suo interno una directory'/tmp' privata, che non è condivisa dai processi al di fuori del namespace. Ciò significa che i processi in esecuzione con questo flag vedrebbero un diverso e univoco '/ tmp' da un utente e da altri demoni vede o può accedere." – TachyonVortex

+0

Grazie per questo. Si scopre che il mio OpenSUSE 13.1 ha la stessa configurazione e lo spostamento dell'output del profiler ha risolto il problema altrove. – savedario

1

stato richiesto il percorso completo, non solo il percorso:

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

Nota: questa era la soluzione fornita dall'OP nella loro domanda. – k0pernikus