0

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

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

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

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

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

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

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

0

[MUSTHAVE] Плагины WordPress

  • Akismet — анти спам в комментах (+ обязательно включить премодерацию всех комментов)
  • All In One SEO Pack — сео оно и в африке сео (считается лучшим плагином для этого, титлы, дескры, кейворды и тд)
  • Autoptimize — минификация и оптимизация цсс и жс
  • BJ Lazy Load — ленивая загрузка картинок (подгружаются по мере скроллинга страницы)
  • Crayon Syntax Highlighter — лучший хайлайтер для кода
  • Cyr-To-Lat — нормальный конвертер русских символов в урл при создании поста (из титла)
  • Optimize DB — полезный плагин для оптимизации БД (кстати советую отключить создание ревизий поста — это плюс к скорости работы системы). Этот плагин чистит какашки в бд
  • Rus filename translit — транслитерация русских названий файлов при заливке
  • SEO Friendly Images — опять сео плагин, теперь для картинок (теги, альты и тд)
  • Simple Tags — полезный и удобный плагин тегирования записей
  • W3 Total Cache — МАСТ ХЭВ! Лучший кэшер для вордпресса. Над настройкой нужно поколдовать, но оно себя оправдывает 146%
  • WP No Category Base — очень нужный плагин который убирает начальную секцию в урле с постами (/category/)
  • WP No External Links — хороший плагин чтобы убрать внешние ссылки (можно через редирект, можно просто обрамлять в нофолоу и ноиндекс)
  • Yet Another Related Posts Plugin — плагин для вывода похожих постов (строится на основании тегов постов)

 

Спасибо ErgoZ!