0

Отладка консольного приложения php на примере yiic

Когда встает вопрос отладки кода скрипта php запущенного в режиме командной строки многие впадают в ступор.

Разберем на небольшом примере отладку консольной команды фреймворка yii (CConsoleCommand).

Для того, чтобы xdebug на сервере смог подключиться к клиенту для обмена отладочной информацией текущей сессии, нужно установить или передать индивидуальные параметры xdebug в php запущенный в режиме CLI SAPI.

К примеру, для отладки консольной команды yii, можно создать простой скрипт, который при запуске установит параметры xdebug модуля в систему и запустит yiic:

Разберем более детально,
Read more

0

Необходимое ПО для разработки под Android

Подготовка среды разработки под Andoid.

  1. Install Oracle Java Development Kit (JDK)
  2. Install Android Software Development Kit (Android SDK)
    В данный момент SDK и Android Development Tools (ADT) идет в комплекте с Eclipse, т.к. я больше люблю продукты Jetbrains — я ставлю Standalone SDK (GET THE SDK FOR AN EXISTING IDE)
  3. Пакеты SDK
    После установки SDK запускаем SDK Manager и выбираем версии Android под которые будем вести разработку, а также все пакеты из разделов Extras и Tools.
  4. IDE для разработки под Java (IDE Jetbrains IntelliJIdea)
    Да, она платная, но оно того стоит (30 дней триала)
  5. Инструмент для сборки пакетов (Gradle binaries only)
    Архив распаковываем в удобную для вас директорию

По мотивам первого видео уроков от Devcolibri TV

2

Поиск элементов списка по параметрам

Ниже представлен класс, позволяющий производить поиск элементов списка по значениям полей этих элементов.

Использование

Произведем поиск всех структур, в которых поле int=1 И поле color=brown:

Read more

0

Отладка сервера за NAT-ом

Если прямого доступа со стороны веб-сервера к вашему компьютеру нет, то описанная ранее схема работать не будет. Но если у вас есть доступ по SSH к веб-серверу, то поможет SSH туннель с вашей машины на сервер, в котором нужно прокинуть порт отладки к вам.

Настройка Xdebug

Перенастроем Xdebug, чтобы он смотрел на свой локальный хост (путь к файлу с настройками для Xdebug у  вас может отличаться, также можно добавить параметры xdebug в php.ini, но это не тру):

Не забываем перезагрузить веб-сервер, чтобы была прочитана новая конфигурация.

SSH Туннель (putty)

Разберем прокладку туннеля, на примере настройки SSH-клиента Putty:
Read more

0

Xdebug:Could not connect to client. :-(

Рассмотрим пример запуска отладки на удаленном веб-сервере, с конфигурацией, к примеру:

и при этом в логе Xdebug возникает ошибка «Сould not connect to client :(.»

Если файла лога нет или он пустой — нужно проверить установлен ли Xdebug и инициирован ли вашими параметрами (в phpinfo будет присутствовать раздел Xdebug с параметрами , которые вы указали в конфигурации).

Причин сообщения «Сould not connect to client :(.» может быть несколько:

1. Веб-сервер не может подключиться по порту отладки в IDE

2. Правила локальной политики безопасности сервера

Решение проблем:

Read more

1

Запуск исполняемых файлов без прав sudo (суперпользователя)

Иногда стоит задача запускать некоторые процессы в *nix среде под правами root (суперпользователя) не имея таких прав.

Это может пригодиться, например в хостинге для перезагрузки сервисов (httpd, mysqld, memcached, etc.) или, как в нашем случае — запуск автотестов (phphunit) под пользователем apache не имея прав sudo для установки пользователя под которым запускать программу.

Предыстория:

Когда у нас появились подрядчики, которые помогали нам разрабатывать услугу — мы выделили им виртуальные хосты и пользователей, которые, по понятным причинам не имели прав суперпользователя. Также наш регламент предписывает тестировать сборку автотестами, которые запускались с командной строки. Некоторые автотесты производили тестирование модуля генерации документов, которые складывались в несколько папок. Вот тут и пришла проблема, которую мы не ждали: при использовании модуля пользователем — файлы и папки создавались с владельцем apache с правами 755, тогда как при запуске автотестов — с владельцем текущего авторизованного пользователя системы, т.к. он запускает phpunit из командной строки, после чего, пользователь уже не может записать файл в папку, созданную автотестом.

Конечно, запустить что-либо в unix под другим пользователем не проблема и легко решается через явное указание пользователя под которым нужно запустить приложение:

но для выполнение такой команды нужны права суперпользователя, которых нет у пользователей подрядчика.

Таким образом, после курения гугла и мануалов пришли к единственному рабочему решению для нас: написать бинарник, который используя s-бит, может быть запущен под правами root, пользователем, у которого таких прав нет.

Собственно, нижепредставленный код, устанавливает, на время выполнения, пользователя root (setuid(0)) и собирая аргументы для запуска, выполняет запуск автотестов под пользователем apache.

Его можно модифицировать под свои нужды:

Read more

0

Установка Zend OPcache

Zend OPcache обеспечивает более быстрое выполнение PHP кода операции через кэширование и оптимизацию. Он улучшает PHP производительность, сохраняя скомпилированные сценариев байт-кода в разделяемой памяти. Zend OPcache включен в PHP 5.5 по умолчанию, если же у вас более старая версия, OPcache стоит установить.

Установка на CentOS

Установка PECL

Установка пакетов по зависимостям

Скачиваем с сайта http://pecl.php.net/package/ZendOpcache пакет для установки

Установка Zend OPcache как пакет PECL

После установки добавляем строку zend_extension=/usr/lib64/php/modules/opcache.so в файл /etc/php.d/opcache.ini

Перезапускаем вебсервер Apache

Оптимальные настройки по умолчанию

По рекомендации разработчиков, оптимальные настройки, которые можно выставить первоначально следующие:

Read more

3

Абстрактный валидатор Yii

Данный компонент позволяет использовать валидаторы Yii без создания модели.

В нашем проекте он используется для валидации входящих параметров процедур API контроллера.

Пример использования:

Код компонента валидатора:

Read more