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セットアップ

開発版とXHProfモジュールの両方をインストールしました。

ではadmin/config/development/xhprof、すべてのページビューのプロファイリングを有効にし、リクエストを削除しました。

xhprofリンクをたどると、上記のエラーが発生します。

ここに画像の説明を入力してください

回答:


35

良い神バットマン。それは信じられないほどイライラさせられました。xhprofを機能させるためのガイドを次に示します。(注:私はLinuxを初めて使用します。使用する許可が安全かどうか、またはそれを行うより良い方法があるかどうかはわかりません。これはテスト環境でのみ行います。)

重要:解釈方法については何も説明しません。どうすればいいのかわかりませんが、うまくいくだけでうれしいです。

XHProfを機能させる

1.実行しているオペレーティングシステムは何ですか?

MacまたはLinuxですか?

それが可能だ。

Windows?

おそらくない。Windowsでxhprofを実行するには、コンパイル済みのdllが必要です。このスレッドにはリンクがありますが、XAMPPで使用しようとすると、常に互換性の問題がありました。

Apacheの異なるバージョンでコンパイルされたと思います。

2. Ubuntuで動作させる

Macでも可能です。以下に2つの便利なリンクを示します。

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でサーバーをセットアップしました。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がインストールされました。

次に、構成する必要があります。にあるphp.iniを開き/etc/php5/apache2/php.ini 、拡張セクションの下に次の2行を追加します。

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

2行目は、出力ディレクトリを設定します。このフォルダーが存在しない場合は、作成する必要があります。

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

これにより、既存のxhprofファイルを指すフォルダーがwebrootに作成されます。その後、ブラウザで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

そして今、あなたはグラフ関数を持っているはずです。うまくいけばそれが助けてくれます!


うわー、印象的な答え。それが価値があるものとして、あなたが使用したパーミッションは正気のようです。
レサリオン

ええ、それを機能させるために深刻な痛みがありました。うまくいけば、それが他の誰か(そして私が忘れていた2ヶ月後に私)を助けるでしょう。
ドミニクウッドマン

素晴らしい答え、完璧に動作し、痛みを和らげて
くれてありがとう:

/etc/apache2/conf.dディレクトリがありません。私が作っ sudo nano /etc/apache2/conf-enabled/xhprof.confし、a2enconf xhprof代わりに
milkovsky

駆け抜けてくれてありがとう。Ubuntu 14.04では、PEARではなくUbuntuリポジトリからインストールしましたphp5enmod xhprofが、conf.dディレクトリからmods-availableディレクトリxhprof.iniファイルへの優先シンボリックリンクを作成するために実行する必要があることがわかりました。xhprofが有効になっているかどうかを確認する別の方法は、実行することです。php5-fpmを、チェックphp5-fpm -i | grep xhprofしているSAPIに置き換えます。
mesch 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.