Ansible: «module_stdout»: «/usr/bin/python: not found\r\n»

После обновления OS FreeBSD с 10.3 до 11.2, ansible стал ругаться такой ошибкой. Т.е. на удаленном хосте, не в том месте ищет интерпретатор python. Пришлось в файл inventory добавить строчку:

[all:vars]
ansible_python_interpreter=/usr/local/bin/python

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:

--- /usr/local/www/apache24/sites/baikal/vendor/sabre/dav/lib/CardDAV/Card.php	2018-07-23 14:17:02.792202000 +0300
+++ /home/pavel/path_dav/Card.php	2018-07-23 14:18:20.941978000 +0300
@@ -220,7 +220,7 @@
                 'protected' => true,
             ],
             [
-                'privilege' => '{DAV:}write',
+                'privilege' => '{DAV:}read',
                 'principal' => $this->addressBookInfo['principaluri'],
                 'protected' => true,
             ],

readonly.sh

#!/bin/sh
patch /usr/local/www/apache24/sites/baikal/vendor/sabre/dav/lib/CardDAV/Card.php /home/pavel/path_dav/readonly.path

write.sh

#!/bin/sh
patch -R /usr/local/www/apache24/sites/baikal/vendor/sabre/dav/lib/CardDAV/Card.php /home/pavel/path_dav/readonly.path

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

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

Deprecated: The each() function is deprecated.

Код:

while (list ($hdr, $value) = each($this->xheaders)) {
...
}

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

foreach ($this->xheaders as $hdr=>$value){
}

 и

while (list (, $line) = each($lines)) {

на

foreach ($lines as $line) {

 

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

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

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

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

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

Жизнь замечательных грибов