I've got a strange issue. I've setup XDebug to profile a PHP application we're working on. I believe everything is setup correctly but I get no output when I run it. My configuration looks like this:
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"
All the phpinfo()
settings match up like they should. The permissions on the output directory are set to 777 right now just so I can test it. I've tried using a directory under public_html as well but no luck. The URL I'm using to launch the profiler is:
http://example.com/my_page.php?XDEBUG_PROFILE
-or-
http://example.com/my_page.php?XDEBUG_PROFILE=1
Neither works. Any help would be GREATLY appreciated!! This app has a 5-6 second page load time and I haven't been able to trace it through code.
You can also selectively enable the profiler by setting xdebug. start_with_request#trigger to trigger . You can then enable the profiler by using an environment value, a GET/POST parameter, or COOKIE variable of the name XDEBUG_TRIGGER .
PHP Code Performance Profiling A profiler is a tool that measures how some code consumes resources at run-time. It enables to find performance bottlenecks and understand the code's behavior. Blackfire Profiler for PHP enables to profile applications during development, test, staging, and production environments.
To detect whether xdebug is v3 or not by mashing up the @daniel and @bishop's answer. php -r "exit(version_compare('3.0',phpversion('xdebug'),'>=')? 1:0);"; echo $? Useful for shell scripts in Dockerfiles and/or CIs.
There is also problem with /tmp folders on some distributions, i couldnt get output on centos 7 and then i found this
So, i have set
xdebug.profiler_output_dir=/home/jirka/profile
chmod 777 /home/jirka/profile
and its ok now.
Comment out xdebug.profiler_output_dir
and xdebug.profiler_output_name
and see whether you can find the output under /tmp/
.
Another possible cause of this issue is the permissions on the folder of profiler_output_dir.
Adding write permissions to the group and owner resolved the issue for me:
sudo chmod go+w /home/dimitris/cachegrind/
Also, beware of access restrictions, such as access rights, groups, owner and SElinux...
The full path was required, not just the path:
xdebug.profiler_append=1
xdebug.profiler_output_dir ="/home/username/debug/xdebug/profiler_output_dir"
xdebug.profiler_output_name = "cachegrind.out.%s.%H"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With