Денис Пестрецов
21.02.2019
267

Использование PHP Console во FreePBX 13

В данной статье рассмотрим использование функции PHP Console, как средства, показывающего текущие ошибки FreePBX в окне браузера. Также рассмотрим возможные проблемы и способы их устранения при изменении параметров PHP Error Level. PHP Console Для включения PHP Console необходимо перейти на вкладку Settings -> Advanced Settings. Находим на открывшейся странице Системные установки (System Setup). Здесь находим […]

В данной статье рассмотрим использование функции PHP Console, как средства, показывающего текущие ошибки FreePBX в окне браузера. Также рассмотрим возможные проблемы и способы их устранения при изменении параметров PHP Error Level.

Данная функция работает только с браузером Google Chrome.

PHP Console

Для включения PHP Console необходимо перейти на вкладку Settings -> Advanced Settings. Находим на открывшейся странице Системные установки (System Setup). Здесь находим пункт PHP Console и выставляем значение в «Yes», тем самым включая данную функцию.

Включение функции PHP Console

Так как мы хотим увидеть не только лог FreePBX, но также результат работы функций dbug, в настройке параметра PHP Error Log Output выставляем значение dbug. Остальные параметры не меняем.

Особенно не стоит изменять параметр PHP Error Level, на более повышенный (во второй части статьи рассмотрим, почему именно).

Подробнее о работе с функцией dbug можно прочитать в статье Дебаг FreePBX 13 (пока не выложена).

Первым делом необходимо установить сам плагин PHP Console в браузер. Для этого переходим по ссылке и устанавливаем. После этого, рядом с адресной строкой Chrome появится логотип PHP Console.

Для вывода дебага в браузер, также необходимо будет установить опцию Disable FreePBX dbug Logging в значение «No».

Включаем дебаг

Теперь приготовления завершены, можно тестировать саму работу.

Сперва необходимо авторизоваться в PHP Console для данного сайта. В качестве пароля будет использоваться значение, содержащееся в поле PHP Console Password и нажимаем Login.

Логинимся в PHP Console

Рассмотрим работу с PHP Console на примере модуля Time Conditions. Добавим к классу функцию дебага. Для этого открываем в режиме редактирования файл: …/admin/modules/timeconditions/ Timeconditions.class.php. В этом файле находим функцию doConfigPageInit и первой же строкой в ней вставляем следующий код:

dbug(“This is debug string”);

Сохраняем и переходим на страницу Правил по времени (Applications -> Time Conditions). По ходу загрузки страницы, в правом нижнем углу экрана будут отображаться сообщения о полученных ошибках:

Сообщения об ошибках

Как видим, первым уведомлением получена строка дебага, а вторым уведомлением – то, каким файлом эта строка была сгенерирована. Также получили три ошибки уровня NOTICE (то есть уровня предупреждений).

Подробнее о работе с модулем Time Conditions можно прочесть в статье правила по времени во FreePBX

Не стоит оставлять постоянно включённой функцию PHP Console, так как, в некотором роде, она считается уязвимым местом FreePBX.

PHP Error Level

Теперь разберёмся, почему же не следует повышать PHP Error Level. На самом деле, здесь всё очень просто. Повышение уровня данного свойства влечёт за собой всплытие «подавленных» ошибок. То есть те ошибки, которые были не критичны до этого момента, становятся критичными, и их уровень важности возрастает. Соответственно, возникновение ошибок подобного рода (к примеру, уровня E_STRICT, приведёт к завершению выполнения скрипта с ошибкой).

Рассмотрим пример. Выставим, в качестве уровня PHP Error Level значение ALL. Нажимаем Submit. Видим, что всё применилось, пока ничего необычного не происходит. Теперь попробуем применить текущую конфигурацию, нажав Apply Config. И тут же сталкиваемся с первой ошибкой – невозможно применить конфигурацию, потому как retrieve_conf вернул ошибку.

Ошибка retrieve_conf

Теперь пробуем вернуть всё обратно, выставляем значение PHP Error Level в значение ALL_NOSTRICTNOTICE, нажимаем Submit и получаем ошибку: Only variables should be assigned by reference в строке $freepbx_conf =& freepbx_conf::create(). Эта ошибка уровня E_STRICT.

Ошибка возврата стандартных значений

Перестаёт работать не только изменение вкладки Advanced Settings, но также, если зайти на вкладку Admin -> Administrators, то увидим другую ошибку, уже уровня E_NOTICE. Тем не менее, загрузка страницы будет остановлена.

Ошибка на странице Administrators

В той или иной степени, ошибки возникают в работе практически всех модулей FreePBX.

Теперь рассмотрим, как всё вернуть к работоспособному варианту. Для этого нам потребуется войти в базу MySQL. Воспользуемся командой:

mysql -u root -p

Далее потребуется ввести пароль для доступа к MySQL под root-пользователем.

Можно использовать и другого пользователя MySQL. Главное, чтобы у него был доступ к редактированию базы asterisk.

Можно использовать и другого пользователя MySQL. Главное, чтобы у него был доступ к редактированию базы asterisk.

После того, как вошли в MySQL, выполняем команду для выбора используемой базы данных:

use asterisk;

Нас будет интересовать табличка freepbx_settings. Именно в ней хранится текущее значение PHP Error Level. Для изменения данного параметра воспользуемся командой:

update freepbx_settings set value='ALL_NOSTRICTNOTICE' where keyword='PHP_ERROR_LEVEL';
Изменения в MySQL

После этого можно возвращаться во FreePBX и применять настройки, нажатием Apply Config. Работоспособность восстановлена.

 
avatar
  Подписаться  
Уведомление о

Остались вопросы?

Я - Кондрашин Игорь, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование

ближайшие курсы

ближайшие Вебинары

ONLINE

Why Choose HUGE?

Unlimited pre-designed elements

Each and every design element is designed for retina ready display on all kind of devices

User friendly interface and design

Each and every design element is designed for retina ready display on all kind of devices

100% editable layered PSD files

Each and every design element is designed for retina ready display on all kind of devices

Created using shape layers

Each and every design element is designed for retina ready display on all kind of devices