четверг, 15 октября 2015 г.

Cannot modify header information - headers already sent

Очень много информации можно найти по этому вопросу, но вся она сводится к пустым строкам между
<?php
 ?>
Либо форматировании без BOM.

Однако как то я писал очередной скрипт при таких же самых условиях как и раньше, только раньше у меня были и пустые строки и пробелы и все что угодно, при этом ошибка не возникала.
Суть проблемы крылась в конфиге php.ini
Для исправления нужно отредактировать строку:
Было output_buffering = off
Стало output_buffering = On
После чего перезагрузить веб серверв и все будет как надо ;) 

четверг, 1 октября 2015 г.

Elastix IAX2/iax-fax2 лечение редких заболеваний


Была проведения стандартная операцию по поднятию факса на Elastix 2.5,
но как говориться что то пошло не так. Факсу был присвоен IAX2 экесентшенс номером 199, при попытке набрать этот номер вместо привычных звуков модема доносился другой знакомый звук, как крик из туалета "ЗАНЯТО!!!"...
А консоль выдает
app_dial.c:2437 dial_exec_full: Unable to create channel of type 'IAX2' (cause 20 - Subscriber absent)
Заходим в консоль астера пишем iax2 show peers.
Name/Username    Host                 Mask             Port          Status      Description
199              unknow       (D)  255.255.255.255  40000         unregistred unknow
1 iax2 peers [1 online, 0 offline, 0 unmonitored]

(картина примерная, ибо гасить его регистрацию для демо я не хочу)) )
Понятно, что модем не хочет подниматься... а быть может его вообще нету?
Проверим: yum install iaxmodem
 Package iaxmodem-1.2.0-2.x86_64 already installed and latest versionХмм модем в имеется.
Смотрим iax.conf

[199]
deny=0.0.0.0/0.0.0.0
secret=********
transfer=yes
context=from-internal
host=dynamic
type=friend
port=4569
qualify=yes
dial=IAX2/199
mailbox=199@device
permit=0.0.0.0/0.0.0.0
callerid=fax <199>
setvar=REALCALLERIDNUM=199

Тут тоже все в норме. Обязательно проверьте что бы нигде не было пропущено ';'
Смотрим  iax_general_custom.conf 
calltokenoptional = 127.0.0.1/255.255.255.0
Должно быть именно так и это тоже очень важный момент.
Если все это у вас в норме и модем настроен правильно, попробуйте добавить в 
iax.conf (или же iax.conf addtional в случаи с эластиксом) следующую строку: requirecalltoken=no
Мне помогло именно это, но замечу что не сразу.
Я вообще сделал нелепое колдунство которое возможно как то и сыграло, но скорее сего это просто глупость. Я попытался зайти под этим экстеншеном с софтфона для того что бы попробовать позвонить на него. Конечно у меня ничего не вышло, IAX это внутренний протокол астериска, но именно после этого мой экстеншен смог зарегистрироваться (волшебный пинок?). Хотя я думаю логичнее было бы сделать  iax2 reload.
Набираю 199... и о чудо! Звук модема. это победа.
Факсы отправляются и принимаются.
Но было еще одно маленькое НО.
В консоли меня одолели сообщения
Restricting registration for peer '199' to 60 seconds (requested 300)
Лечится это добавлением в файл  iax_registrations_custom.conf 

Следующих строк
minregexpire = 60
maxregexpire = 300

Ну вот вроде и все ;)