准备工作
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/

xhprof 安装详解的更多相关文章

  1. Linux ssh登录和软件安装详解

    阿哲Style   Linux第一天 ssh登录和软件安装详解 Linux学习第一天 操作环境: Ubuntu 16.04 Win10系统,使用putty_V0.63 本身学习Linux就是想在服务器 ...

  2. 【转】Linux下Android ADB驱动安装详解

    原文网址:http://blog.csdn.net/zhenwenxian/article/details/5901350 Linux下Android ADB驱动安装详解 概述 最近由于内置的合作商比 ...

  3. scribefire 多博客管理利器 安装详解

    scribefire 多博客管理利器 安装详解 一.ScribeFire介绍 ScribeFire 是 Firefox (火狐浏览器)上著名的博客写作工具,目前已跨平台支持多浏览器(Firefox,C ...

  4. CentOS 6.5的安装详解

    CentOS 6.5的安装详解 主流: 目前的Linux操作系统主要应用于生产环境, 主流企业级Linux系统仍旧是RedHat或者CentOS 免费: RedHat 和CentOS差别不大,Cent ...

  5. Linux下tomcat的安装详解

    Linux下tomcat的安装详解 来源: ChinaUnix博客 日期: 2007.01.21 22:59 (共有0条评论) 我要评论 一,安装前的准备:1,Linux版本:我的是企业版.(至于红帽 ...

  6. Phoenix和SQuirrel安装详解

    Phoenix安装详解 描述 现有hbase的查询工具有很多如:Hive,Tez,Impala,Shark/Spark,Phoenix等.今天的主角是Phoenix. phoenix,中文译为“凤凰” ...

  7. zabbix agent安装详解

    安装 Installing repository configuration package Zabbix 2.2 for RHEL5, Oracle Linux 5, CentOS 5: rpm - ...

  8. zabbix server安装详解

    简介 zabbix(音同 zæbix)是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以 ...

  9. Oracle Database 12c Release 2安装详解

    第1章 Oracle Database 12c Release 2安装详解 1.1 下载方法 oracle官网https://www.oracle.com 1)打开官方网站,找到下载连接 2)选择更多 ...

随机推荐

  1. Java基于opencv实现图像数字识别(一)

    Java基于opencv实现图像数字识别(一) 最近分到了一个任务,要做数字识别,我分配到的任务是把数字一个个的分开:当时一脸懵逼,直接百度java如何分割图片中的数字,然后就百度到了用Buffere ...

  2. 在linux系统下运行jar包的命令如下

    1.java -jar xxxxx.jar  // 当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出 2.java -jar xxxxx.jar &   //当 ...

  3. Go Example--状态协程

    package main import ( "fmt" "math/rand" "sync/atomic" "time" ...

  4. java中的可释放资源定义,类似c#中的using

    public static class FileDuplicator implements AutoCloseable { Scanner in = null; PrintWriter out = n ...

  5. 修改linux服务器的MySQL密码

    1.   首先用管理员权限登陆Linux: 2.   输入:vi  /etc/my.cnf  回车.然后按“i”键盘,在这个文件中的最后一行输入:skip-grant-tables   然后按 esc ...

  6. because there was insufficient free space available after evicting expired cache entries

    Tomcat运行的时候哗哗哗的报警告 版本是Tomcat 8.5.15 告警信息关键字如下 because there was insufficient free space available af ...

  7. Python 回调函数

    什么是回调函数? 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数: 这是官方的解释,理解上有点费 ...

  8. SpringBoot事务注解@Transactional

    SpringBoot提供了非常方便的事务操作,通过注解就可以实现事务的回滚,非常方便快捷,下面我们就说一下如何进行事务操作. 1. 事务说明 在Spring中,事务有两种实现方式,分别是编程式事务管理 ...

  9. 解决centos 7.5安装openvpn,mirrors.163.com提示没有可用软件包openvpn、easy-rsa问题

    提示: yum install openvpn 已加载插件:fastestmirror Loading mirror speeds from cached hostfile * base: mirro ...

  10. Xamarin+Prism开发详解七:Plugin开发与打包测试

    有了上章[Xamarin+Prism开发详解六:DependencyService与IPlatformInitializer的关系]的基础,现在来理解Plugin开发就简单了. 本文实例代码地址:ht ...