安装和配置XHProf(Ubuntu)


19

问题

我正在尝试使用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).

因为临时文件夹不存在,但是我的存在,所以这里解决问题。

设置服务器端

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

pear按照此处的说明安装xhprof 。我还向我手动创建的php.ini添加了一个临时目录。

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

Drupal设置

我既安装了devel,也安装了XHProf模块。

在中admin/config/development/xhprof,我启用了对所有页面视图和请求请求的性能分析。

在跟随xhprof链接时,出现上述错误。

在此处输入图片说明

Answers:


35

上帝棒蝙蝠侠。那真令人沮丧。这是使xhprof工作的指南。(注意:我对Linux还是很陌生。我不确定我使用的权限是否安全,或者是否有更好的方法。我只会在测试环境中这样做。)

重要说明:它不会告诉您有关如何解释它的任何信息。我不知道该怎么做,我很高兴它能起作用。

使XHProf工作

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

Mac还是Linux?

这是可能的。

视窗?

可能不会。要在Windows上运行xhprof,您必须具有已编译的dll。在该线程中有一个链接,但是当我尝试在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都可以使用,但我设法使其在Ubuntu Server 13.04上运行。

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

3.安装XHProf

我假设我们有一个功能全面的Ubuntu Server。

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

sudo apt-get install pear

我们还需要phpdev来跟进。

sudo apt-get install php5-dev

如果这些命令不起作用,而我弄错了,请直接进行以下操作:

sudo pecl install -f xhprof

Ubuntu会告诉您所缺少的内容,并提示您安装它。获得所有依赖项后,安装xhprof。

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

sudo pecl install -f xhprof-beta

希望现在已安装xhprof。

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

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

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

sudo service apache2 restart

4.检查XHProf是否正在运行

现在我们需要检查是否可行。

测试1:

输入 php -m

如果您在列表中看到xhprof,那就很好了。如果没有,请放心,请尝试以下方法检查其是否正常工作:

转到您的webroot /var/www/并仅创建一个php文件:

phpinfo();

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

在此处输入图片说明

5.与Drupal一起使用

我无法与Drupal模块一起使用。因此,我将告诉您如何使它与devel模块一起使用。

首先,我从这里借用一些配置。我并没有真正遵循这一部分,但是它的工作原理如此之好。

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

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的小链接。

在此处输入图片说明

然后单击它应将您带到如下所示的页面。你完成了。恭喜你!

在此处输入图片说明

如果这不起作用并且出现运行错误,则可能是因为Drupal无权写入我们之前设置的tmp文件夹,所以输入:

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

希望能奏效。大功告成 哎呀!

除非您想要绘图功能。幸运的是,这很简单:

sudo apt-get install graphviz
sudo service apache2 restart

现在,您应该具有绘图功能。希望有帮助!


哇,令人印象深刻的答案。就其价值而言,您所使用的权限似乎是理智的。
Letharion

是的,要使它正常工作有些痛苦。希望它将对其他人(以及我遗忘的两个月内的我)有所帮助。
多米尼克·伍德曼

好的答案,完美的解决方案,thanx可以缓解疼痛:-)
JurgenR 2013年

我没有/etc/apache2/conf.d目录。我做了 sudo nano /etc/apache2/conf-enabled/xhprof.confa2enconf xhprof替代
milkovsky

感谢您的贯穿。在Ubuntu 14.04上,我是从Ubuntu信息库而不是PEAR安装的,发现我需要执行php5enmod xhprof才能创建从conf.d目录到mods可用目录xhprof.ini文件的优先级符号链接。检查xhprof是否已启用的另一种方法是运行php5-fpm -i | grep xhprof,将php5-fpm替换为您要检查的SAPI。
mesch 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.