当前位置: 首页>>技术问答>>正文


安装和配置XHProf(Ubuntu)

webfans 技术问答 , , 去评论

问题描述

问题

我正在尝试使用XHProf,但每次运行时我都会遇到可怕的php错误。

Warning: Invalid argument supplied for foreach() in xhprof_compute_inclusive_times() (line 1670 of /var/www/drupal/sites/all/modules/XHProf/xhprof.inc).
Warning: Invalid argument supplied for foreach() in xhprof_compute_flat_info() (line 1644 of /var/www/drupal/sites/all/modules/XHProf/xhprof.inc).
Warning: Invalid argument supplied for foreach() in theme_xhprof_overall_summary() (line 367 of /var/www/drupal/sites/all/modules/XHProf/xhprof.module).

问题解决了here,因为临时文件夹不存在,但是我的确存在。

Set-Up服务器端

我正在使用Drupal 7运行新的Ubuntu Server 13.04。

按照说明书here使用pear安装xhprof。我还为php.ini添加了一个临时目录,我手动创建了该目录。

extension=xhprof.so
xhprof.output_dir="/var/tmp/xhprof"

Drupal Set-Up

我安装了devel,并且还安装了XHProf模块。

admin/config/development/xhprof中,我启用了所有页面查看和drush请求的分析。

在关注xhprof链接后,我得到上面的错误。

7,debugging,drupal

最佳解决方法

好神蝙蝠侠。这令人非常沮丧。这是让xhprof工作的指南。 (注意:我对Linux很新。我不确定我使用的权限是否安全,或者是否有更好的方法。我只在测试环境中执行此操作。)

重要提示:它不会告诉您有关如何解释它的任何信息。我不知道怎么做,我很高兴它有效。

让XHProf工作

1.你在运行什么操作系统?

Mac还是Linux?

这是可能的。

视窗?

可能不会。要在Windows上运行xhprof,您必须有一个已编译的dll。这个thread中有一个链接,但是当我尝试在XAMPP上使用它时,我总是遇到兼容性问题。

我认为它是用不同版本的Apache编译的。

2.让它在Ubuntu上工作

这可能在Mac上。这里有两个有用的链接:

http://www.lullabot.com/blog/article/installing-xhprof-mamp-and-php-52-mac-os-106-snow-leopard http://www.midwesternmac.com/blogs/jeff-geerling/getting-xhprof-working-well

但我还没有这样做。我设法让它在Ubuntu Server 13.04上工作,虽然我认为任何最新版本的Ubuntu Server都可以工作。

我在VirtualBox上的set-up我的服务器。 VirtualBox是免费的,但可能需要一些时间来学习如何设置它。

3.安装XHProf

我假设我们有一个功能齐全的Ubuntu服务器。

首先我们需要安装梨。我们将使用它来安装XHProf。

sudo apt-get install pear

我们用phpdev跟进这个也是必需的。

sudo apt-get install php5-dev

如果这些命令不起作用并且我弄错了,那就直接进行:

sudo pecl install -f xhprof

Ubuntu会告诉你你缺少的东西,并提示你安装它。一旦你获得了所有依赖项安装xhprof。

您可能会在安装xhprof时遇到错误,它会尝试下载测试版并失败。在那种情况下尝试:

sudo pecl install -f xhprof-beta

希望xhprof现在已安装。

现在我们需要配置它。打开位于/etc/php5/apache2/php.ini的php.ini,并在extensions部分下添加以下两行:

extension=xhprof.so
xhprof.output_dir="/var/tmp/xhprof"

第二行设置输出目录。如果此文件夹不存在,则必须创建它。当您使用完成重启apache时

sudo service apache2 restart

4.检查XHProf是否正在运行

现在我们需要检查一下是否有效。

测试1:

输入php -m

如果你在列表中看到xhprof,那么你很高兴。如果没有,请不要担心,请尝试这样做以检查它是否正常工作:

转到您的webroot /var/www/并创建一个仅包含以下内容的php文件:

phpinfo();

将其保存为phpinfo.php。在浏览器中打开它,您应该看到PHP信息。搜索xhprof,如果你看到它,那么它正在运行。

7,debugging,drupal

5.让它与Drupal一起工作

我无法使用Drupal模块。所以相反,我将告诉你如何使用devel模块。

首先是我从here借来的一些配置。我没有真正遵循这一部分,但它的作用就是礼物马等等。

使用以下命令创建新的配置文件:

sudo nano /etc/apache2/conf.d/xhprof.conf

并插入以下代码。

alias /xhprof_html "/usr/share/php/xhprof_html/"

然后我们可能需要为xhprof_html文件夹创建一个符号链接。所以,以防万一设置:

ln -s /usr /share /php /xhprof_html /var /www /xhprof_html

这将在您的webroot中创建一个指向现有xhprof文件的文件夹。然后在浏览器中打开http://mywebsitehere.com/xhprof以查看您已完成的所有运行。

然后重启apache。现在是时候进行一些开发配置了。转到开发设置,启用xhprof并设置:

xhprof directory = /usr/share/php

XHProf URL = /xhprof_html

现在,在每个页面的底部,您应该看到一个指向xhprof的小链接。

7,debugging,drupal

点击它会带你到一个看起来像这样的页面。你完成了。恭喜!

7,debugging,drupal

如果这不起作用并且你得到运行错误,那可能是因为Drupal没有权限写入我们之前设置的tmp文件夹,因此输入:

sudo chown -R www-data /var/tmp/xhprof

希望这有效。我们完成了。 Hoorah!

除非你想要图形功能。值得庆幸的是,这很简单:

sudo apt-get install graphviz
sudo service apache2 restart

现在你应该有图形功能。希望这有帮助!

参考资料

本文由朵颐IT整理自网络, 文章地址: https://duoyit.com/article/2180.html,转载请务必附带本地址声明。