Утилита linux dot (с xhprof)

i установил расширение профиля xhprof для php

Все отлично, за исключением файла callgraph.php, он возвращает: failed to shell execute cmd=" dot -Tpng"

поэтому я проверил, и утилита dot не была установлена, поэтому я ее установил.

он, кажется, отлично работает из командной строки, поэтому я снова запустил scritp, такую ​​же ошибку: failed to shell execute cmd=" dot -Tpng"

В документации xhprof указано: the callgraph image visualization ([View Callgraph]) feature relies on the presence of Graphviz "dot" utility in your path.

но я не понимаю, что мне нужно делать сейчас, в частности часть "полезность в вашем пути"

Любая помощь ценится, спасибо ребятам

Ответ 1

Если вы хотите, чтобы функции графического отображения для xhprof запускали следующую команду в терминале:

sudo apt-get install graphviz

Ответ 2

Когда я включаю error_reporting, я вижу, что некоторые параметры конфигурации отсутствуют:

function xhprof_generate_image_by_dot($dot_script, $type) {
  // get config => yep really dirty - but unobstrusive
  global $_xhprof;

  $errorFile    = $_xhprof['dot_errfile'];
  $tmpDirectory = $_xhprof['dot_tempdir'];
  $dotBinary    = $_xhprof['dot_binary'];

После добавления следующих строк в xhprof_lib/config.php, он работает

$_xhprof['dot_errfile'] = '/home/peniel/var/log/xhprof/error.log';
$_xhprof['dot_tempdir'] = '/home/peniel/var/log/xhprof';
$_xhprof['dot_binary'] = '/usr/bin/dot';

Ответ 3

Если вы установили graphviz, эта ошибка также возникнет из-за ограничений безопасности. Некоторые функции могут быть отключены. Итак, см. Ваши журналы для некоторых предупреждений php.

Например:

PHP Warning:  proc_open() has been disabled for security reasons in /usr/share/php/xhprof_lib/utils/callgraph_utils.php on line 112

Вам нужно настроить параметр php.ini или security.ini "disable_functions".

Ответ 4

Наличие утилиты "в вашем пути" означает, что она может быть расположена переменной окружения PATH. Эти переменные среды содержат каталоги, в которых оболочка ищет исполняемые файлы, которые вы запускаете без явного пути.

Скажем, что полный путь к dot равен /opt/foo/bin/dot. Затем вы хотите изменить переменную среды PATH следующим образом:

PATH=${PATH}:/opt/foo/bin

Ответ 5

В моем случае это было вызвано просто потому, что graphviz не был установлен. Вы можете проверить с помощью which dot или locate graphviz в командной строке.

Ответ 6

шаги для быстрого исправления проблемы, если у вас есть Graphviz и по-прежнему возникают ошибки:

  • запустите "какая точка"

/USR/локальные/бен/точка

  1. открыть строку xhprof_lib/utils/callgraph_utils.php 110
  2. заменить "dot" на "/usr/local/bin/dot" (или путь у вас есть)