02.05.2015 / admin / 0 Comments
Каждое новое обновление серверного программного обеспечения — это упражнение из области «и хочется, и колется…». Так и я решил наконец-таки устаревающий PHP5.2 оставить в прошлом (ведь он не умеет работать с многими новомодными плюшками), и перейти на PHP5.4.
Таким образом был обновлен PHP на одном из боевых серверов (с полутора дясятком разного рода сайтов). Реакция клиентов не заставила себя долго ждать, и сразу посыпались жалобы на поломанный в разных местах функционал.
Расскажу об одной из причин, вдруг кому-то пригодится.
Выполнение некоторых участков кода заваливалось с ошибкой «Fatal error: Call-time pass-by-reference has been removed in».
Оказалось, что новый PHP не разрешает использовать ссылку (&$arg) в вызове функции. К слову, PHP и раньше мог ругаться на такую конструкцию, правда всего-лишь на уровне Warning’ов. Новый PHP оказался строже, отдавая Fatal error при выполнении.
В это же время использование ссылки на аргумент в объявлении функции допускается и приветствуется.
Резюмирую.
Стоит избегать конструкций:
[code type=php]myFunc($arg1, &$arg2);[/code]
А использовать:
[code type=php]function myFunc($arg1, &$arg2) {}[/code]
26.11.2013 / admin / 0 Comments
В текущем проекте появилась необходимость делать экспорт некоторых документов в PDF. Один из лучших классов, существующих на сегодняшний день — fpdf. А если вам понадобится работать с кирилицей (utf-8), тогда вам понадобится ufpdf.
В один прекрасный момент работы с этим классом, я столкнулся с тем, что периодически и безсистемно при генерировании pdf-документа fpdf падает с ошибкой «fatal error: allowed memory size of…».
Погуглив нашел упоминания в сети о похожей проблеме, связанной с использованием колонтитулов в документе. Но в моих документах они не используются, и поэтому пришлось искать дальше. Ничего не нагуглив, начал искать ошибку методом исключения.
Ошибка оказалась в следующем. fpdf почему-то не очень любит вставлять изображения из сети, например:
$pdf->Image('http://yandex.st/morda-logo/i/l-logo-ua.png',10,80,'160','','PNG','');
Проблема решается просто. Изображение перед вставкой в документ надо сохранить на сервер любым способом (fopen(), file_get_contents(), etc..), и вставлять в документ уже из локального каталога.
02.01.2011 / admin / 8 комментариев
Мне приходится работать с движками многих сайтов, постоянно появляются для обслуживания новые, и уходят в архивное забвение старые. Поэтому часто добавляются новые блоки виртуалхостов в конфиге Апача, и сам конфиг уже изрядно раздулся.
Появилась минутка свободного времени, и я решил навести порядок в этом безобразии. Захотелось сделать так, чтобы для добавления нового сайта, было достаточно создать директорию, и прописать новый хост в /etc/hosts, а не повторять каждый раз монотонную операцию добавления и редактирования блоков <VirtualHost>.
По сути теперь у меня есть основной домен, и к нему автоматически добавляются субдомены, по которым и грузятся разные сайты с локальной машины.
(далее…)
15.04.2010 / admin / 9 комментариев
Нужен был рег для проверки корректности введенного URL. Для примера был взят один отсюда, но немного дописан.
Добавлена возможность принимать урлы с указанием порта, а также разрешено использование в адресе (не домене) символов «()*» (причем это позволено RFC 1738) и кириллицы (да, появилась нужда принимать и обрабатывать такие адреса без предварительного rawurlencode()).
(далее…)
08.05.2009 / admin / 4 комментария
Появилась задача создания простых таблиц excel налету.
В принципе, если поискть в сети, то можно найти ряд готовых инструментов для создания *.xls файлов.
Делюсь с вами коротким обзором.
(далее…)
06.05.2009 / admin / 6 комментариев
Эта статья была написанна мной несколько лет назад. Была опубликованна на разных сайтах:
http://www.php.com.ua/ru/articles/basic/session_start.htm
http://btl-studio.com/o/17/
http://kiev.abcname.net/index.php?o=17
Ну и чтобы добро не пропадало, сделаю кросспост тут.
(далее…)