pChart Fatal error: Uncaught Error: Cannot use string offset as an array in

Продолжаю ловить ошибки перевода проекта с PHP 5.4 на PHP 7.2 😉 На этот раз обнаружилось что pChart используемый в части отчетов скорее мертв чем жив, а последнее обновление на официальном сайте от 2014 года. Но! Как всегда нашлись энтузиасты, которые создали форк, в котором в 2.1х ошибки совместимости с PHP 7.2 устранены и выпущена ветка 2.2, не совместимая с pChart 2.1x

https://github.com/bozhinov/pChart2.0-for-PHP7/tree/7.x-compatible

https://github.com/bozhinov/pChart2.0-for-PHP7/tree/2.2

Read only для CalDAV+CardDAV сервера Baikal

К сожалению такая полезная функция как ReadOnly для аккаунта на сервере Baikal не предусмотрена. Ну например когда делаешь общую адресную книгу для организации и не хочешь чтобы любой пользователь нечаянно нажав пару кнопок не удалил важные контакты.

Однако! Чуть покопавшись в движке, можно сделать небольшой патч, который позволит на нужное время включать режим readonly, и выключать его (на период когда нужно подправить общий справочник).

Открываем baikal/vendor/sabre/dav/lib/CardDAV/Card.php и в строке 195 меняем write на read.

У себя я оформил всё 3 файлами: 1) Патч 2) Включение режима readonly 3) Выключение режима

readonly.path:

readonly.sh

write.sh

Deprecated: The each() function is deprecated в PHP 7.2

При переносе кода из PHP 5.4 на PHP 7.2 в libmail.php словил следующую ошибку:

Код:

Ну в принципе достаточно заменить его на:

 и

на

 

Пишем расширение для PHP

Для чего может понадобиться написать свое расширение?

  • Существенно повышается скорость исполнения кода
  • Защита существующего кода — код поставляется в виде бинарника
  • Работа с драйверами, «железом на прямую» или использование сторонних dll/so

При разработке данного мануала использовались ресурсы http://www.php-cpp.com и https://habr.com/post/98862/, а так-же ряд других.

» Читать далее

Проблема с кодировкой локали скриптов Python выполняемых из crontab

Столкнулся с проблемой, что скрипт выполняемый из консоли работает корректно, а выполняемый из crontab — пишет ошибку

UnicodeEncodeError: ‘ascii’ codec can’t encode

Дело в том, что задания выполняемые из crontab имеет кодировку по умолчанию ascii. Потому нужно в /etc/crontab добавить строчку:

LANG=ru_RU.UTF-8

1 2 3 4