Категория ‘php’

SMF ошибки форума в таблице _log_errors

SMF (Simple Machines Forum) ведет лог ошибок, который сохраняет в базе в таблице _log_errors

2: strpos() [<a href=’function.strpos’>function.strpos</a>]: Offset not contained in string<br />Файл: smfdir/Themes/default/BoardIndex.template.php (eval?)<br />Строка: 1

2: gzinflate() [<a href=’function.gzinflate’>function.gzinflate</a>]: data error
Файл: smfdir/Themes/default/BoardIndex.template.php (eval?)
Строка: 1

2: strpos() [<a href=’function.strpos’>function.strpos</a>]: Offset not contained in string<br />Файл: smfdir/Themes/default/Register.template.php (eval?)<br />Строка: 1

8: Undefined index: dhhag
Файл: smfdir/Themes/default/BoardIndex.template.php (eval?)
Строка: 1

И еще куча записей с аналогичной ошибкой в разных файлах. Что-то подсказывает - видимо, “не все в порядке”..
Заглядываем в первую строку и видим что-то вроде:

<?php /**/eval(base64_decode('aWY ... 7fX19')); ?>

Подобное безобразие творится и в остальных “ошибочных файлах”. Файлы в одном каталоге, кстати имеют одинаковую дату изменения. Видимо имеет место, массовое изменение файлов по ftp или скриптом. Наблюдаем… Не исключено, что вирус на локальном компьютере.

upd 10.12.2009
После такой зачистки ошибки smf-форума довольно долго не появляются. Похоже, все в порядке.
Кстати, видимо, эта “зараза” поддерживает “обновления”. То есть при обновлении форума на более новую версию, она переносится (возможно, изменяясь) в файлы новой версии. И периодически “обновляется” - “зараженные” файлы имели довольно свежую дату изменения, причем в каждом каталоге свою и “одну на всех”…

Опубликовано Ноябрь 26, 2009 | автор: levik  |  Комментарии (4) »

CURL в PHP (libcurl)

CURL (Client URL Library), libcurl - библиотека функций для работы с серверами по различным протоколам (http, ftp, https … и ряд других - более подробно смотрите описание последней версии).

В php включена  (если точнее, имеется возможность включить - зависит от конфигурации сервера) поддержка curl. Проверить, поддерживается ли сервером функции curl проще всего, произведя вызов любой из функций, например
<?php
$ch = curl_init("http://www.example.com/");
?>

Если исполнение этого кода не приведет к ошибке - все в порядке, можем использовать CURL в “корыстных целях”. Если же “функция не существует”… Но, впрочем, это уже совсем другая история. А пока вернемся к нашим.. CURL ам.

В PHP самый простой вариант использования библиотеки обычно  сводится к следующим шагам:

Инициализация - curl_init($url);
Установка параметров - curl_setopt($ch, $opt, $value);
Выполнение запроса - curl_exec($ch);
// Получение и обработка информации - обычно хватает результата, возвращенного предыдущей функцией, однако, существует несколько дополнительных функций, например curl_getinfo($ch);
Закрытие - curl_close($ch);

Особенности и подводные камни:
CURLOPT_COOKIEFILE и CURLOPT_COOKIEJAR при работе в  WINDOWS будут правильно работать только при указании полного пути к файлу.

curl_setopt($ch,CURLOPT_COOKIEFILE,dirname(__FILE__).’/tmpfile.txt’;)

php class Snoopy позволяет использовать php почти как браузер - скачиваем, загружаем…

Опубликовано Апрель 7, 2009 | автор: levik  |  Нет комментариев »

Plesk и open_basedir

Столкнулся с таким положением дел: при попытке заинклудить какой-нибудь файлик командой типа include (’include/inc.inc’) - с указанием каталога относительно текущего, сервер выдал что-то вроде
blablabla open_basedir restriction in effect. blablabla ...
Мол не могу и всё.
Недоразуменьице получается. В плеске по умолчанию open_basedir включено. (если кому интересны подробности - пошукайте или в переводе). Как вариант лечения предлагаю подсмотренную на каком-то забугорном сайте пилюльку:

  1. Заходим по  (SSH)
  2. Создаем новый файл:
    vi /etc/httpd/conf.d/blabla_openbasedir_removal.conf
  3. Тыкаем [INS]ert на клавиатуре, чтобы перейти в режим ввода текста и пишем:
    <DirectoryMatch /var/www/vhosts/(.*)/httpdocs/>
         php_admin_value open_basedir none
    </DirectoryMatch>
  4. Тыкаем в кнопку (ESC) - переходим в командный режим; 
  5. Нажимаем [:wq] чтобы сохранить файл и выйти 

Теперь open_basedir нас беспокоить не должна…

Чуть не забыл.. после всего этого надо веб-сервер перезапустить. Либо service apache restart, либо service httpd restart… (Конечно, не исключено, что “служба” называется по-другому… Тогда должен помочь reboot :)

Думаю, понятно, что, если вместо (.*)  написать mydomainname.ru, то сработает это только для конкретного домена.

Кстати, Warning!!! :) Safe Mode was removed in PHP 6.0.0.

Опубликовано Август 15, 2008 | автор: levik  |  Комментарии (5) »

Бланки на PHP.

Довольно часто для обеспечения удобства работы с интернет магазином требуется решить задачу оформления различных шаблонных документов - всевозможные бланки почтовых отправлений, квитанций на оплату, накладных… При этом, неплохо иметь возможность “на всякий случай” отредактировать получившийся документ.

Один из вариантов решения - подготовка шаблонов документов в формате RTF (в программе MS WORD). При подготовке шаблона туда, где должны располагаться подставляемые данные, например, сумма заказа, помещаем “оригинальную” последовательность символов, например, %SUM%.
Внимание! При подготовке шаблона аккуратнее со сменой языков. При работе в программе ворд следует выделить последовательность символов (%SUM%), выбрать пункт меню Сервис-Язык-Выбрать язык. Я выбирал Русский :)
Шаблон сохраняем на сервер (например, с именем template.rtf в каталог со скриптом)

В скрипте, при работе с шаблоном, просто заменяем последовательность символов:$file = file_get_contents('template.rtf');
$file = str_replace("%SUM%", ' '.$sum, $file);
header('Content-type: application/octet-stream');
header('Content-Disposition: attachment; filename=nakladnaya.rtf');

Где брать бланки документов? В интернете.. Все более-менее актуальные есть в “свободном” доступе. В крайнем случае, можно заплатить.

Опубликовано Апрель 12, 2008 | автор: levik  |  Комментарии (4) »

FCKeditor - транслит имен файлов

FCKeditor при загрузке файлов с русскими символами в имени выводит ТАКИЕ кракозябры.. :)

Для “облегчения” жизни себе и ему “прикручиваем” плагин - http://setegnom.com/node/930

http://www.supremum.lv/2010/04/09/transliteraciya-imyon-fajlov-pri-zagruzke-v-modx/

Опубликовано Март 18, 2008 | автор: levik  |  Нет комментариев »