2016-09-02 15:12:03

Oracle Client вместе с PHP-FPM

PHP Oracle Linux

PHP-FPM

Достаточно часто встречается связка Nginx + PHP-FPM, которая заменяет собой привычный многим Apache + mod_php. А когда требуется добавить возможность работать с Oracle из PHP, то не подготовленный человек, а точнее привычный к настройке Oracle Client для PHP, работающего как модуль Apache, может столкнуться с непредвиденными проблемами, о решении которых я попробую рассказать.

Итак, у нас CentOS (в принципе на других Linux все будет аналогично) на который уже установлен Nginx, PHP, PHP-FPM и Oarcle Client + модуль php_oci8. На всякий случай, в этом можно убедиться командой:

# php -m | grep oci

Если вывод такой же, как в примере ниже, то модуль установлен:

# php -m | grep oci
oci8

А вот если, там ругань об отсутствующей библиотеке вроде:

PHP Startup: Unable to load dynamic library 'oci8.so' (tried: /usr/lib/php/20170718/oci8.so (libmql1.so: cannot open shared object file: No such file or directory), /usr/lib/php/20170718/oci8.so.so (/usr/lib/php/20170718/oci8.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0

То надо сделать (замените путь из примера на свой):

# echo /u01/app/oracle/product/12.1.02/db_1/lib > /etc/ld.so.conf.d/oracle.conf
# ldconfig

* в случае Oracle Instant Client путь будет до папки клиента, например /opt/oracle/instantclient_12_2.

Теперь модуль должен нормально заработать в консольном режиме.

Но после этого все равно при попытке использовать oci_connect(...) получаем вот такую ошибку в ответе от сервера:

Warning: oci_connect(): OCIEnvNlsCreate() failed. There is something wrong with your system - please check that ORACLE_HOME and LD_LIBRARY_PATH are set and point to the right directories in /var/www/...

Когда все известные бубны с прописыванием ORACLE_HOME и LD_LIBRARY_PATH во все скрипты запуска и прочие перебраны, но все равно не работает, то простое решение кажется просто невозможным, но оно есть!

Читать дальше...

2016-08-11 16:36:34

Вопрос для любителей ПеХеПе

PHP

PHP Code

Вашему внимаю предлагается жвачка для ума для любителей true-кодинга на PHP.

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

Итак, задача казалось бы вполне тривиальная и очень типичная:

Получить в переменную $id значение параметра id из GET, при условии, что это цифра и больше 0, в остальных случаях - FALSE.

И это бы было тривиально, если бы не следующие ограничения:

Запись должна быть в одну строку $id = ...; (точку с запятой можно поставить только один раз в конце строки), а операторы 'if' и '?', а также фигурные скобки использовать нельзя. Обращаться к массивам $_* нельзя.

Тест-кейс который должен выполняться:

index.php?id=100500  => 100500
index.php?id=-10     => FALSE
index.php?id=0       => FALSE
index.php?id=        => FALSE
index.php?id=wtf     => FALSE
index.php?           => FALSE

Ну что ж, давайте рассуждать как это сделать.

Читать дальше...

2016-05-20 14:53:04

Упыри лютые

Юмор

Упыри лютые

Продолжаем тему дурацких картинок, которые вроде бы и деть некуда, и удалить жалко. А эта еще и на злобу дня пришлась :)
2016-05-12 12:01:00

pisem.net, совсем нет :(

Почта

Как-то грустно писать про отвал почтового сервиса, но тем не менее мой почтовый ящик @pisem.net похоже умер. Произошло это следующим образом: вчера сижу жду письма о верификации емейл адреса и тишина, через пол часа отправляю повторно - так же тишина. Тестовое письмо с gmail так же не дошло. По прошествию ночи и отсутствию входящих писем приходится констатировать, что таким сервисом пользоваться не возможно :(

Картину дополнила моя попытка обращения в тех.поддержку, подробно описав проблему и нажав отправить на их сайте я получил белый экран. Со своей стороны я, конечно, понимаю, что сервис бесплатный и все такое, и что скорее всего он не является приоритетным для его владельца, но у конкурирующих почта-провайдеров на той же бесплатной основе все хорошо работает.

В принципе, исходя из бесплатности, я давно мирился с медленным соединением и частыми таймаутами при работе через IMAP внешних клиентов, обилием спама, медленным и неудобным веб интерфейсом и прочими атрибутами бесплатного продукта. Но когда на лицо проблема с доставкой почты и отсутствие хоть какой-то поддержки со стороны сервиса, думаю придется отказаться от этого "замечательного" почтовика.

Хочу обратиться к "Почте QIP.ru": "Уважаемые! Если вы не можете поддерживать работу сервиса на достойном уровне, пожалуйста, закройте его или продайте тем, кто сможет! Ну а если, вдруг, у вас второй день уже авария, то хоть уведомите клиентов об этом, хоть как-нибудь."

2016-04-03 18:25:01

Отлавливаем самый горячий процесс в Windows

Windows

Некоторое время назад столкнулся с непонятным поведением в Windows 7: ноут стоит и вроде бы ничего не делает, но кулер системы охлаждения работает изо всех сил и наполняет комнату горячим воздухом. Но вот только стоит к нему подойти, чтоб посмотреть в чем дело, так сразу нагрузки исчезает и работа охлаждения нормализуется. Далее я опишу свою схему поиска и отлова "горячего" процесса.

Читать дальше...