I have never used any tool that can do that statically (i.e. from source files), but here's a way to get a callgraph when executing a script/application.
First, you need to install the Xdebug extension -- on a development/testing server (don't install it on a production server : it's quite bad for performances ^^ )
Then, you can use its profiling features to generate a .cachegrindout
file corresponding to te execution of a page-load.
After that, you can load that .cachegrindout
file with KCacheGrind (On linux -- I don't think there's a windows version) ; KCacheGrind can generate call-graphs from .cachegrindout
files.
And here's an example of callgraph you can get :
(Here's, it's been generated from a .cachegrindout
file obtained while loading a page of Dotclear, a blogging software)