Php 让XHProf可视化(Graphviz和dot的问题)发挥作用

Php 让XHProf可视化(Graphviz和dot的问题)发挥作用,php,profiling,graphviz,dot,xhprof,Php,Profiling,Graphviz,Dot,Xhprof,我已安装并希望看到调用图可视化。我单击了查看完整调用图,首先收到了以下消息: 无法执行cmd:“dot-Tpng”。stderr:`sh:dot:command未找到' 通过谷歌搜索,我发现这是由于没有安装。然后我安装了它: $ yum install graphviz 然后再试一次。现在我收到以下错误消息: 无法执行cmd:“dot-Tpng”。stderr:`Error:/usr/lib64/graphviz/config6为零大小,或其他读取错误 错误:/usr/lib64/graphv

我已安装并希望看到调用图可视化。我单击了查看完整调用图,首先收到了以下消息:

无法执行cmd:“dot-Tpng”。stderr:`sh:dot:command未找到'

通过谷歌搜索,我发现这是由于没有安装。然后我安装了它:

$ yum install graphviz
然后再试一次。现在我收到以下错误消息:

无法执行cmd:“dot-Tpng”。stderr:`Error:/usr/lib64/graphviz/config6为零大小,或其他读取错误

错误:/usr/lib64/graphviz/config6大小为零,或其他读取错误

“dot”没有布局引擎支持

也许需要运行“dot-c”(具有安装程序的权限)来注册插件

"

实际上,执行
dot-c
会导致错误:

$ dot -c
Error: /usr/lib64/graphviz/config6 is zero sized, or other read error.
Warning: Could not load "/usr/lib64/graphviz/libgvplugin_pango.so.6" - file not found
Warning: Could not load "/usr/lib64/graphviz/libgvplugin_xlib.so.6" - file not found
Segmentation fault
但是文件
libgvplugin_pango.so.6
libgvplugin_xlib.so.6
都在那里,并且位于
/usr/lib64/graphviz/

$ ls -l /usr/lib64/graphviz
total 724
...
lrwxrwxrwx 1 root root     26 May 19 13:58 libgvplugin_pango.so.6 -> libgvplugin_pango.so.6.0.0
-rwxr-xr-x 1 root root  22408 Sep 19  2012 libgvplugin_pango.so.6.0.0
lrwxrwxrwx 1 root root     25 May 19 13:58 libgvplugin_xlib.so.6 -> libgvplugin_xlib.so.6.0.0
-rwxr-xr-x 1 root root  15656 Sep 19  2012 libgvplugin_xlib.so.6.0.0
嗯,作为符号链接。但这不重要。无论如何,我也测试了这个案例:

mv /usr/lib64/graphviz/libgvplugin_pango.so.6 /usr/lib64/graphviz/libgvplugin_pango.so.6_DEACT
mv /usr/lib64/graphviz/libgvplugin_xlib.so.6 /usr/lib64/graphviz/libgvplugin_xlib.so.6_DEACT
cp /usr/lib64/graphviz/libgvplugin_pango.so.6.0.0 /usr/lib64/graphviz/libgvplugin_pango.so.6
cp /usr/lib64/graphviz/libgvplugin_xlib.so.6.0.0 /usr/lib64/graphviz/libgvplugin_xlib.so.6
没有效果,还是一样的错误

这里出了什么问题以及如何使其正常工作?


环境:使用CentOS 6作为来宾系统的VirtualBox虚拟机。

我终于让它工作起来了


简短回答

我猜
yum更新
或者/或者
ann libs
安装可能是决定性的一步。但这只是一个假设,因此我描述了所有可能很重要的步骤(见下文)


详细答案

首先,我尝试使用相关软件包安装
graphviz

$ yum install 'graphviz*'
但安装不起作用:

Error: php56w-common conflicts with php-common-5.3.3-46.el6_6.x86_64
 You could try using --skip-broken to work around the problem
** Found 1 pre-existing rpmdb problem(s), 'yum check' output follows:
cairo-1.8.8-3.1.el6.x86_64 has missing requires of libpixman-1.so.0()(64bit)
然后我尝试了同样的方法,但在之前的存储库中添加了
graphviz-rhel.repo

$ cd /etc/yum.repos.d/
$ wget http://www.graphviz.org/graphviz-rhel.repo
$ yum list available 'graphviz*'
$ yum install 'graphviz*'
它因另一个错误而失败:

Error: Package: graphviz-2.38.0-1.el6.x86_64 (graphviz-stable)
           Requires: libANN.so.1()(64bit)
 You could try using --skip-broken to work around the problem
** Found 1 pre-existing rpmdb problem(s), 'yum check' output follows:
cairo-1.8.8-3.1.el6.x86_64 has missing requires of libpixman-1.so.0()(64bit)
正如所预料的那样,
——skip Breaked
也没有带来成功

之后,我做了多项工作:
yum clean all
yum erase'graphviz*'
ann libs
安装,以及
yum update

$ yum clean all
$ yum install 'graphviz*'
$ yum erase 'graphviz*'
$ cd ~/temp/
$ wget http://dl.fedoraproject.org/pub/epel/6/x86_64/ann-libs-1.1.1-4.el6.x86_64.rpm
$ rpm -i ann-libs-1.1.1-4.el6.x86_64.rpm 
$ yum update

现在它可以工作了。

在一些RHEL 6系统上也有同样的问题,结果证明问题在于某些X11库上Graphviz插件的隐藏依赖性,我可以通过安装以下RPM来安装这些插件:

  • libXau
  • libxcb
  • libXext
因此,这解决了我的问题:
yum安装gtk2-libXau-libxcb-libXext

以下是为什么不这样做。