cURL error 60: SSL certificate : self signed certificate in certificate chain

При работе с curl не только в php может возникнуть подобная проблема: cURL error 60: SSL certificate : self signed certificate in certificate chain (see http://curl.haxx.se/libcurl/c/libcurl-errors.html) Решить её можно следующим образом: Скачать последнюю версию файла cacert.pem. В конфигурационном файле php.ini добавить или отредактировать строку curl.cainfo=/path/to/cacert.pem.

Хитрости при работе с регулярными выражениями PCRE на PHP

Наверное не существует ни одного разработчика, которому не пришлось бы хотя бы раз столкнуться регулярными выражениями. Мне же периодически приходится довольно плотно с ними работать, но назвать себя экспертом по регекспам я не могу. Никогда не используйте регулярные выражения Если можно обойтись без регулярок — значит нужно этим воспользоваться. Практически […]

Использование Telegram Core API (MTProto) на PHP

Эта заметка не про Bot API, а про Core API Telegram, с помощью которого можно создавать полноценные клиенты для месседжера, и конечно же любой другой софт, например для сбора данных из Телеграма. Основная проблема заключается в том, что общение с серверами Telegram осуществляется по специальному протоколу разработанным внутри компании — […]

Как проверить число на чётность в любом языке программирования?

Есть очень простое и элегантное решение основанное на свойстве двоичных чисел: число нечётное только тогда, когда его младший бит установлен в 1. С помощью битовой операции & (и) можно это проверить.

Поменять местами значения переменных в PHP

Существует красивое и элегантное решение в одну строку: list($a, $b) = [$b, $a]; А для PHP версий 5.3 и старше можно воспользоваться сокращённым вариантом: [$a, $b] = [$b, $a]; Что более читаемо и проще, чем классическое: $tmp = $a; $a = $b; $b = $tmp; Кроме того, таким образом можно […]

Ротация логов docker контейнеров

В продолжение прошлой статьи рассмотрим пример настройки ротации логов контейнеров на примере CentOs 7. В моём случае stdout и stderr контейнеров никакой ценности не имеют, а все значимые события пишутся либо в примонтированные директории, либо в Apache Kafka. В ротации логов внутри самих контейнеров не вижу смысла.

Как в Laravel создать подключение к БД в runtime

Бывают ситуации, например, когда предопределённых в конфиге Laravel подключений к базам данных не достаточно и возникает потребность создавать подключения динамически во время выполнения PHP скрипта. Например, креденшиналы задаются как параметры консольной команды. Иногда это единственный способ проинтегрироваться с посторонним приложением. Далее рассмотрим один из способов решения подобных задач.

Запуск команд от имени системных пользователей

Когда требуется запустить команду или просто проверить права доступа от имени другого пользователя, можно воспользоваться примерно такой командой: su -c whoami nobody Для обычных пользователей это вернёт ожидаемый результат. Но, для системных пользователей, вроде nobody, apache и .т.д., результат будет таким: This account is currently not available.