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