Архив Категории: PHP

Статьи и мои мысли по PHP

Возможные проблемы с установкой 1С-Битрикс на хостинг

Доброго времени суток.

Честно признаюсь — по моему мнению Битрикс полный кошмар… Но люди его охотно ставят и пользуются. По этому решил описать возможные проблемы с установкой 1С-Битрикс на хостинг, с которыми приходилось сталкиваться

По теме: при установке на хостинг он весьма требователен. Может попросить, а временами и приказать поменять некоторые атрибуты в конфигурации сервера. А именно:
open_basedir, realpath_cache_size, прекомпилятор (акселератор PHP), mbstring.internal_encoding и другие. Все перечислять не буду. Проблема состоит в том, что все эти настройки можно поменять только в php.ini. Попробую описать, что каждая из перечисленных мною представляет. Начнем с последней.

  • mbstring.internal_encoding — определяет, какая кодировка используется по умолчанию внутри, для Битрикса необходимо значение utf-8.
  • Прекомпилятор- акселератор PHP. Выдержка из Wikipedia:программа, ускоряющая исполнение сценариев PHP интерпретатором путём кэширования их байткода.Иными словами эта штука компилирует код, кэширует скомпилированную версию и при обращении к скрипту, выполняет его скомпилированную копию из кэша. Прекомпилятор является необязательным — Битрикс ставится и без него.
  • realpath_cache_size — кэш, в котором хранятся абсолютные пути к выполняемым файлам. Это позволяет уменьшить время, затрачиваемое на резрешение путей, что на мой взгляд дает прирост производительности при большом количестве посещений. Доступно с версии PHP 5.1.0 (в некоторых источниках пишут с 5.2). По умолчанию стоит 16 Кб, это маловато мягко говоря для Битрикса. Он просит не менее 4096 Кб. Цифра большая, и, судя по всему, рассчитанная на большое количество хитов.
  • open_basedir — путь, выше которого клиентские скрипты на хостинге пройти не смогут. Битрикс требует, чтобы путь уходил в корень, т.е. доступ ко всему жесткому диску. На самом деле папки tmp вроде бы должно хватать. Если честно с этим не особо экспериментировал, так что точно утверждать не стану. Скажу только, что Битрикс при установке часто ругается.

Пока вроде бы все из тех, что мне встречались и мешали «жить». Если появятся еще какие — обязательно дополню.

Получение прямой ссылки на видео YouTube.

Доброго времени суток.

Решил выделить из предыдущего поста отдельную функцию для получения видео только из YouTube. Видео с этого видеохостинга можно получить, имея ID видео в системе. Что-то около 10 символов абракадабры. Вот результат:

function getVideoUrl($id)
{
    $formats = array('18', '22', '37', '38');
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'http://www.youtube.com/get_video_info?video_id=' . $id);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $links = curl_exec($ch);
    curl_close($ch);
    parse_str($links, $info);
    if ($info["status"] == 'fail') {
        $video_array[] = '';
        return;
    }
    $res = explode(',', $info['url_encoded_fmt_stream_map']);
    foreach ($res as $k => $v) {
        parse_str($v, $rr);
        if (in_array($rr['itag'], $formats)) {
            $video_array[] = $rr['url'];
        }
    }
    return $video_array;
}

Это так сказать «частный» вариант функции, только для YouTube. Вариант сделан из предыдущей статьи, так что тоже для получения исключительно файлов формата mp4.

Получение прямой ссылки на видео ВКонтакте.

Доброго времени суток.

Вот и у меня возникла необходимость получить прямую ссылку на видео Вконтакте. Статьи на эту тему в интернете есть, я написал эту опираясь на статью на сайте welinux.ru. Алгоритм получения ссылки там изложен, осталось перевести его в необходимый язык программирования.

Вот что у меня получилось: читать далее »

Авторизация ВКонтакте без создания cookie

Доброго времени суток.

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

Установка и настройка Alternative PHP Cache (APC)

Доброго времени суток.

Сегодня изложу свой опыт в установке акселератора для PHP. В частности для себя выбрал Alternative PHP Cache. Вот ссылка на скачивание пакета.

Для начала вам нужен будет рабочий LAMP-сервер. В моем случае все было на Debain.

APC — это расширение PHP, входящее в состав PECL, который доступен через PEAR, поэтому для начала надо накатить на PHP PEAR

apt-get install php-pear

После надо еще доставить несколько пакетов, необходимых для компиляции APC:

apt-get install php5-dev build-essential

После этого, согласно прочитанной мною статье, необходимо начать установку APC. Но есть одно НО — выходит ошибка

make: *** [php_apc.lo] Error 1
ERROR: 'make' failed

Все оказалось просто — не хватает еще одной библиотеки. Доставляем ее:

apt-get install libpcre3-dev

А вот уже после этого можно начинать установку при помощи PECL:

pecl install apc

После этого при необходимости добавляете строку для активации расширения в php.ini

extension=apc.so

Ну и в конце концов перезапускаем Apache

/etc/init.d/apache2 restart

cURL и HTTPS

Вчера возникла необходимость в работе с Вконтакте API. После некоторого времени пришло осознание — что без cURL собственно ничего хорошего у меня не выйдет, если у меня есть желание парсить данные на стороне сервера.

Вот так я решил освоить начальные знания по cURL. Как оказалось самая большая проблема в поиске информации по этой теме — это подробное описание предопределенных констант, которые собственно и определяют способы и параметры взаимодействия cURL и удаленной URL (масло масляное получилось:). Я не буду здесь подробно описывать огромное их множество. Тем более в ссылках на моем сайте есть сажб на эту тему. Хочу написать только про два параметра, которые мне пригодились. Короче, Вконтакте API использует для передачи данных протокол HTTPS.

Для использования этого протокола необходимо определить значение этих двух параметров CURLOTP_SSL_VERIFYPEER, CURLOTP_SSL_VERIFYHOST в значение FALSE следующим образом:

$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

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

Яндекс.Метрика