Yii2: Примеряем Pjax на ActiveForm и GridView

В фреймворке Yii 2.0 встроена поддержка jquery плагина pjax, объединяющего pushState и ajax технологии. Подробнее на гитхабе разработчика. Для примера сделаем возможность добавления новой Заметки в списке заметок без перезагрузки страницы.

Yii2: все плюшки Twitter Bootstrap

Одной из замечательных особенностей Yii 2.0 является встроенная поддержка Bootstrap 3.0 от Twitter. Для вывода компонентов бутстрапа в шаблонах приложения можно использовать виджеты. Виджеты в Yii2 — небольшие блоки кода, которые можно легко многократно использовать для форматированного вывода данных. Как и большинство объектов в Yii 2.0, настройки виджету можно передать в виде массива параметров. Вместо немного монструозного $param = array(‘key1′ =>’value1’,… Читать далее »

Yii2: работа с экземпляром приложения

Одно из основных понятий в фреймворке Yii 2.0 — приложение. В контексте Yii2, приложение — объект, который определяет структуру и и жизненный цикл запросов на веб-сайте. Приложение, так же, может быть и консольным, но мы будем рассматривать веб-приложение. Каждый запрос к Yii-приложению осуществляется через входной скрипт, который настраивает приложение: $application = new yii\web\Application($config); и запускает его: $application->run();

Yii2: Простая реализация RBAC с двумя ролями

Один из самых часто встречающихся вопросов по Yii 2.0 — реализация управления доступом на основе ролей. Поддержка RBAC встроена в Yii2, но она может быть сложновата для реализации начинающими разработчиками, впервые столкнувшимися с этим вопросом при знакомстве с Yii 2.0. Часто бывает достаточно всего двух ролей: Пользователь и Администратор. Эта реализация поможет понять как работает механизм RBAC в Yii2 и… Читать далее »

Yii2: Начало

В данной статье мы установим Yii 2.0, настроим локальную среду для разработки и создадим первое простое приложение из встроенного шаблона basic. Релиз Yii 2.0, новой версии замечательного фреймворка, состоялся 12 октября 2014 года. Установка Yii 2.0 Подробную информацию по установке фреймворка можно найти в соответствующем разделе Документации по Yii 2.0.  Там же можно найти и описание классов и расширений. Русская… Читать далее »

PHP управление Onvif-совместимой купольной IP камерой RVI/Dahua

Недавно появилась необходимость собирать скриншоты с нескольких управляемых PTZ купольных IP камер RVi-IPC52DN20‎. Стандарт Onvif подразумевает взаимодействие с устройством через SOAP интерфейс. Получаем информацию об устройстве Согласно официальной спецификации, на запрос GetDeviceInformation: [xml]<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"> <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <GetDeviceInformation xmlns="http://www.onvif.org/ver10/device/wsdl"/> </s:Body> </s:Envelope>[/xml]

Новый раздел в свободной области LVM

Несколько раз приходилось сталкиваться с серверами, использующими жесткие диски объемом 2Тб. На одном из них нужно было оставить 100Гб под нужны операционной системы и другого программного обеспечения, а все остальное место предназначено для хранения данных. Диск был разбит с использованием  LVM (Linux Volume Manager) /dev/sda на весь диск. Использование fdisk для создания дополнительных разделов было невозможно. Создадим новый логический том… Читать далее »

Неприемлемый 406 Not Acceptable при использовании curl

Столкнулся со следующей проблемой, иногда curl возвращает ошибку «406 Not Acceptable» answer: # curl http://domain.com/curl.php <html><head> <title>406 Not Acceptable</title> </head><body> <h1>Not Acceptable</h1> <p>An appropriate representation of the requested resource /curl.php could not be found on this server.</p> <p>Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.</p> </body></html> Способ решения проблемы найден достаточно… Читать далее »

Сохранение и восстановление используя MySQLDump

Недавно, в очередной раз, понадобилось сделать снимок работающей базы данных MySQL и развернуть его в другом месте. Этот метод сохраняет ВСЕ базы данных в один файл, который может быть импортирован на другом сервере. Для этого понадобится учетная запись root MySQL сервера. Экспортируем: # mysqldump -u root -p $PASS —all-databases > MyDUMP.sql Импортируем:

Проблемы с пересылаемыми письмами в Plesk

Столкнулся с проблемой, пользователь не может переслать письмо на адреса root@somehost и postmaster@somehost в Plesk. Я, так же, пробовал сделать это вручную, через командную строку. Меня привлекла следующая запись об ошибке в логах qmail: Uh-oh:_first_line_of_.qmail_file_is_blank.

Как скрыть версию Apache и операционной системы

Ежедневно тысячи «скрипт-киддисов» бороздят просторы интернетов при помощи специальных сканеров, анализирующих версии серверного программного обеспечения на предмет наличия уязвимостей, упрощающих удаленный взлом. Например версия  устаревшего Apache может выдать уязвимость, через которую злоумышленник сможет загрузить шелл и скомпрометировать безопасность всего сервера. Список сайтов со старыми, уязвимыми версиями скриптов, cms, форумных движков можно найти в любой поисковой системе.

Как добавить новый диск в CentOS 6.x

Рассмотрим общий алгоритм добавления нового диска в систему CentOS или RedHat. Убедимся, что диск отформатирован. Первый, второй и третий диски будут, соответственно, /dev/sda, /dev/sdb и /dev/sdc. Проверяем командой fdisk -l: [13:23:12] [root@localhost ~]# fdisk -l Disk /dev/sda: 25.7 GB, 24741258411 bytes 255 heads, 63 sectors/track, 3471 cylinders Units = cylinders of 12254 * 512 = 6274048 bytes Device Boot Start… Читать далее »

Слишком большое число подключений MySQL

Проблема со слишком большим количеством подключений к MySQL возникает обычно по двум причинам: Все логично — очень большое количество посетителей и, как следствие, большая нагрузка на сервер. Встречается не так часто, но и не редко — большое количество подключений MySQL, при небольшом количестве посетителей. Не оптимизированные скрипты, работающие с субд, в том числе и не закрывающие подключения. Первый способ решения… Читать далее »

Yii2: Официальный релиз

Сегодня вышла в свет стабильная версия php-фреймворка yii 2.0 и я не могу не написать об этом знаменательном событии, которого многие ожидали с нетерпением. Официальную информацию можно узнать здесь. Чем больше я узнаю yii2, тем больше он мне нравится. Начиная с альфа версии, я приступил к его изучению, тогда документация была совсем еще сырая. И несмотря на это, я смог… Читать далее »

Не загружается файл в wordpress

Я часто встречаю в сети вопросы пользователей wordpress и других cms вроде этого: При попытке загрузить файл, сервер выдает ошибку: Не удалось загрузить файл image.jpg. Невозможно создать директорию wp-content/uploads/2014/09. Проверьте доступность данной директории на запись! Обычно каталог «uploads» должен иметь разрешения 777 или принадлежать пользователю, под которым работает веб-сервер/php, но в зависимости от используемых инструментов разработчика (Webmin/cPanel/Pleask и других), права… Читать далее »

Что означают значения chmod

Данная таблица позволяет легко понять и запомнить механизм разграничения прав доступа в linux: User (пользователь) Group (группа) Other (все остальные) Read 4 4 4 Write 2 2 2 Execute 1 1 1 U G O X X X   И, на последок, пример расшифровки некоторых значений chmod: 777 rwxrwxrwx 755 rwxr-xr-x 750 rwxr-x— 700 rwx—— 644 rw-r—r—

Повышение прав до root без пароля

В определенной степени, мне надоело часто набирать пароль root — он у меня достаточно длинный. Нашел для себя решение, все-лишь нужно подправить файл /etc/sudoers в: <user> ALL=NOPASSWD: ALL Не забываем заменить <user> на имя пользователя, которому даем такую привилегию.  Теперь простой командой sudo su — мы повышаемся до root: [17:53:21] [nix@localhost ~]$ sudo su — [17:53:22] [root@localhost ~]# Не забываем, что это… Читать далее »

Поиск больших файлов в Linux

Поиск больших файлов в Linux может понадобиться в случае нехватки свободного места на жестком диске. Я обычно использую этот метод когда меня просят помочь с решением вопроса пропажи свободного места в системе Linux. С этой командой (с правами root или обычного пользователя) можно найти большие файлы и узнать их местоположение и удалить, если потребуется: $ find <path> -size +40M -exec… Читать далее »

Размонтирование «занятого» устройства

При работе с внешними жесткими дисками и другими съемными носителями нередко случается ситуация, когда при размонтировании диска возникает ошибка «Device is busy» : [root@localhost]# umount /external/ umount: /external: device is busy umount: /external: device is busy В реальности, мой внешний диск /dev/sdb2 смонтирован к /external: [rootlocalhost]# fuser -m /dev/sdb2 /dev/sdb2: 12432

Установка EPEL на CentOS/RHEL

EPEL (Extra Packages for Enterprise Linux) — включает в себя большое количество программных пакетов, отсутствующих в стандартной поставке CentOS/RHEL.  Все пакеты EPEL протестированы на совместимость с системой и оперативно обновляются. CentOS 7.x rpm -ivh http://mirror.logol.ru/epel/7/x86_64/e/epel-release-7-5.noarch.rpm CentOS 6.x (i386) rpm -ivh http://mirror.logol.ru/epel/6/i386/epel-release-6-8.noarch.rpm CentOS 6.x (x86_64) rpm -ivh http://mirror.logol.ru/epel/6/x86_64/epel-release-6-8.noarch.rpm Подробное описание, пакеты для устаревших версий linux и много полезной информации всегда можно найти… Читать далее »