xhprof 安装详解

准备工作
1.xhprof不支持php7,需要php7以下版本
2.php扩展模块xhprof下载地址: http://pecl.php.net/get/xhprof-0.9.4.tgz

xhprof安装

$ php -v #查看php版本 如果为php7的话 会报错 可以进行php降级处理
以下降级处理 前提装的是lnmp集成环境
$ wget http://soft.vpser.net/lnmp/lnmp1.4.tar.gz #下载安装脚本压缩包
$ tar -zxvf lnmp1.4.tar.gz #解压压缩包
$ cd lnmp1.4 #进入lnmp目录
$ ./upgrade.sh php #执行php脚本 输入版本号

  

$ php -v #脚本执行后看php版本 为php5.6.31的话 进行以下步骤
$ php -m # 查看php所有扩展
$ cd /usr/local/php/include/php/ext # 进入php扩展模块目录
$ wget http://pecl.php.net/get/xhprof-0.9.4.tgz #下载模块xhprof包
$ tar -zxvf xhprof-0.9.4.tgz #解压xhprof压缩包
$ mv xhprof-0.9.4 xhprof #修改文件名xhprof-0.9.4 为 xhprof
$ cd xhprof/extension #进入xhprof下的extension目录
$ /usr/local/php/bin/phpize #执行phpize命令
$ ./configure --with-php-config=/usr/local/php/bin/php-config #执行./configure进行编译前配置
$ make && make install #编译安装

  

$ vim /usr/local/php/etc/php.ini #编辑php.ini 在最后一行添加以下内容
[xhprof]
extension=xhprof.so
xhprof.output_dir=/var/xhprof_data

  

$ mkdir -p /var/xhprof_data #创建xhprof临时文件目录
$ chmod 777 /var/xhprof_data
$ systemctl restart php-fpm #重启php
$ php -m #查看php扩展 出现xhprof了 就是扩展安装成功了

$ cd /home/wwwroot/default #进入php的www目录
$ mkdir xhprof #创建xhprof目录
$ cd /usr/local/php/include/php/ext/xhprof #进入php扩展xhprof目录
$ mv examples/ xhprof_html/ xhprof_lib/ /home/wwwroot/default/xhprof #将php扩展xhprof目录的文件 移动到 php的www目录下的xhprof目录

  

访问出现的错误解决方法

访问地址:http://192.168.0.149/xhprof/examples/sample.php
复制最下面的那个地址到地址栏
http:///index.php?run=5a70263b3ca67&source=xhprof_foo

  

访问地址修改为: http://192.168.0.149/xhprof/xhprof_html/index.php?run=5a70263b3ca67&source=xhprof_foo

  

点击 [View Full Callgraph] 出现

根据错误提示有三种 不过一般是这两种

1.we can not find profile data for run_id 5a70263b3ca67
2.you do not have 'dot' image generation utility installed.

  

首先假设是第一种情况 先验证我们的想法

$ cd /var/xhprof_data # 进入存放xhprof临时文件的地方
$ ls # 查看列表  如果为空的话 说明没有写东西进去
$ vim  /usr/local/php/etc/php.ini # 468行 修改为 display_errors = On
$ systemctl restart php-fpm #重启php|

这时再访问地址

我们需要修改nginx配置文件的openbase_dir选项

$ vim /usr/local/nginx/conf/fastcgi.conf #在最后一行添加 fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/:/var/xhprof_data";
$ systemctl restart nginx #重启nginx

然后再打开地址 http://192.168.0.149/xhprof/examples/sample.php  再把最下面的地址复制出来 放到地址栏访问 

继续点击 [View Full Callgraph] 出现

函数去除后 可能会报这个错

sh:dot:command not found 解决办法:

$ yum -y install graphviz

效果ok结果:

参考资料:

http://www.zhimengzhe.com/php/338363.html

http://www.cnxct.com/you-do-not-have-dot-image-generation-utility-installed/

原文地址:https://www.cnblogs.com/foreversun/p/8386298.html