Настройка прав на файлы и директории в Docker-контейнере для Linux-систем

При использовании стека PHP+DOCKER (+ все остальное) на Linux-системах у вас, скорее всего, возникнут проблемы с правами в контейнере. Нельзя будет записать какой-либо файл в директорию, начнут вылетать ошибки при сохранении логов и всё в таком духе. При использовании фреймворков, например, такого как Laravel, эта проблема уже решена его разработчиком, а во всех других случаях решать коллизию с правами нужно своими руками. Ниже приведён один из простых вариантов решения.

(далее…)

Сбор данных о подписчиках группы Вконтакте (VK) через API с помощью execute

В текущем проекте мне понадобилось довольно плотно взаимодействовать с API Вконтакте. Раньше с ним работать не приходилось. Оказалось, он довольно удобный и функциональный, с опрятной документацией и понятными примерами. Через него можно решать огромное количество задач. Простая схема «вопрос-ответ», впрочем, как и для любого другого API, позволяет легко получать статистику, управлять группами, пользователями и т.д.

(далее…)

Работа с Redis из командной строки (консоли)

Подключение к серверу Redis:

redis-cli -h <host> -p <port>

Если уже вошли (через redis-cli), но не аутентифицировались, то:

AUTH <password>

Пароль можно задать в файле конфигурации «/etc/redis/redis.conf».

Основные команды:

KEYS *
 
SET key value
SETNX key1 value2
MSET key1 "value1" key2 "value2" key3 "value3"
 
GET key
MGET key1 key2 key3 key4
 
EXISTS key
INCR MyIntegerValue
 
EXPIRE keyname 100
TTL keyname
 
TYPE key
 
LRANGE 0 -1 [просмотр всего списка]
LRANGE 0 5 [просмотр с 0 по 5 элемент списка]
 
HSET hash_name key1 value1 [задать значение]
HGETALL hash_name [показать все из хеша]
HKEYS hash_name [показать ключи]
HVALS hash_name [показать значения]
 
ZRANGE keyname 0 -1 [показать все значения из zset]
ZRANGE keyname 0 -1 WITHSCORES [показать все значения с весами из zset]
 
FLUSHALL [удаляет все, будьте осторожны!]

Полезные ссылки

[1045] Access denied for user — Ошибка подключения к БД из PhpStorm’a

Оказывается я уже полгода не писал постов в блог и нужно бы освежить. Проекты идут один за одним и время проходит незаметно. Ну да ладно, перейдем к проблеме и способу её решения.

Сегодня обновлял окружение разработки для одного из поддерживаемых проектов. Одним из изменений было обновление версии MySql с 5.7 на 8. Все локальное окружение, как обычно, крутится на Докере. Обновил docker-compose.yml, пересобрал проект, запустил и при соединении PhpStorm’a к БД увидел вот такую ошибку:

... [1045] Access denied for user '...'@'xxx.xxx.xxx.xxx' ...

После проверки правильности логинов, паролей и остальных параметров подключения, проблема осталась, пересборка контейнеров с очищением всех кешей тоже не помогла. Решение оказалось простым, я остановил Докер, зачистил директорию с данным MySql-контейнера (путь до этой директории лежит в параметре volumes) и запустил Докер заново со сборкой: docker-compose up —build, после этого все работало нормально.

Удаление файлов из git

Удалить файлы из git’a с сохранением в файловой системе:

git rm --cached my_file.txt
git rm --cached -r my_folder_name

Удалить директорию из git’a без сохранения в файловой системе:

git rm file.txt
git rm -r my_folder_name

Чтобы лишние файлы не попадали в репозиторий добавляйте их в .gitignore.

Управление множеством ssh-ключей с паролями (ключевыми фразами или passphrase) через keychain

Наличие множества ssh-ключей и необходимости их использовать для работы доставляет немало проблем. Их нужно где-то хранить, указывать каждый раз при использовании соответствующий ключ, запоминать ключевые фразы и вводить их (passphrase) при использовании. Ситуацию спасают возможность настройки ssh и утилита keychain (или её аналоги).

(далее…)

Немного о тестировании в Yii2

В данное время покрываю тестами проект-долгострой на Yii2. Возможно кому-то пригодятся заметки.

(далее…)

Docker: No releases available for package «pecl.php.net/redis»

Сегодня встретилась вот такая ошибка для пакетов загружаемых через PECL. Хоть в сообщении и написано «Нет доступных релизов», но они были на сервере. Ошибка странная и почему она возникла сказать не могу. Все указывает на сетевые проблемы. Если простыми словами, то мой компьютер не мог нормально добраться до компьютера на котором находятся требуемые пакеты. Проблему решить удалось, об этом ниже.

(далее…)

Объединение и сжатие стилей (css) и скриптов (js) на Yii2

Пару недель назад мне понадобилось обновить верстку на одном из своих старых сайтов. Он был создан в году 16-м или 17-м, точно уже не помню. Новую верстку успешно адаптировал и встал вопрос оптимизации css и js, ранее они были в обычном виде — без объединения и минификации. Было решено воспользоваться примером из документации. Как это вышло без Vite, Gulp‘a, Laravel Mix‘a и подобных инструментов покажу ниже на простом примере.

(далее…)