Форум SAPE.RU

Форум SAPE.RU (http://forum.sape.ru/index.php)
-   Контекстные ссылки и все, что с ними связано (http://forum.sape.ru/forumdisplay.php?f=28)
-   -   Контекстные ссылки в движках на Perl - тестируем модуль! (http://forum.sape.ru/showthread.php?t=11894)

Meneldor 21.04.2008 12:54

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

Для обновления модуля необходимо произвести следующие операции.
  1. Заменить старый SAPE.pm на новый (приаттачен к этому сообщению).
  2. Заменить старый код вызова:
    Код:

    my $sape = new SAPE(...);
    на новый:
    Код:

    my $sape = new SAPE::Client (...);
    в связи с переименованием класса SAPE в SAPE::Client (старый формат вызова тоже поддерживается, однако будет отключен в будущем).
  3. Если при вызове new SAPE раньше передавался параметр uri, следует заменить имя параметра на request_uri.

Для использования контекстных ссылок необходимо сделать следующее.
  1. Добавить код для создания объекта SAPE::Context с теми же параметрами, что передаются в конструктор SAPE::Client:
    Код:

    my $sape_context = new SAPE::Context (...);
  2. Для замены контекстных ссылок в определённом фрагменте текста следует вызывать функцию replace_in_text_segment, передавая в качестве параметра функции ссылку на скаляр с текстом (лучше для экономии памяти, замена будет произведена прямо в тексте по ссылке) или просто скаляр с текстом (в этом случае текст с заменой будет возвращён в качестве результата вызова функции):
    Код:

    $sape_context->replace_in_text_segment(\$text);
    или
    Код:

    $text = $sape_context->replace_in_text_segment($text);
  3. Для замены контекстных ссылок внутри вручную расставленных в нём тегов <sape_index> ... </sape_index> или целиком внутри тега <body> ... </body>, если блоков <sape_index> ... </sape_index> в документе нет, следует вызывать одну из этих функций:
    1. replace_in_page - устанавливает перехватчик вызовов к стандартной функции print, сделана по аналогии с replace_in_page в модуле для PHP, однако с ограничениями: не работает в mod_perl, может не работать в FastCGI, выводит полученный текст только при окончании работы скрипта, а не порциями, - поэтому я лично этот метод не рекомендую, он реализован лишь для совместимости с модулем на PHP:
      Код:

      $sape_context->replace_in_page;
    2. replace_in_page_text - работает совершенно аналогично replace_in_page, однако делает замену не в тексте, который передаётся при вызовах к print, а в том тексте, который Вы передаёте в качестве параметра функции, - причём аналогично replace_in_text_segment (ссылка на скаляр или просто скаляр):
      Код:

      $sape_context->replace_in_page_text(\$text);
      или
      Код:

      $text = $sape_context->replace_in_page_text($text);
      Разница между функциями replace_in_text_segment и replace_in_page_text в том, что в первую передают куски текста, установка контекстных ссылок в которых делается целиком, а во вторую передаётся целиком HTML-документ с (опционально) блоками <sape_index> ... </sape_index>.

А вообще - читайте документацию на модуль SAPE для PHP, все параметры и функции в новом модуле SAPE для Perl теперь именуются так же, так что смело пользуйтесь параметрами verbose, multi_site (кстати, а вот и он!) и т.п.

Пожалуйста, обо всех проблемах сообщайте в этом топике, а ещё лучше - по аське 23057061.

Antuan 21.04.2008 14:48

Привет!

У меня есть Сайт на ПЕРЛ. Давно жду контекстный ссылок...
Что-то сложновато описано... Что, где меняем...
Будем пробовать (если получится...) - Дело-то хорошее... :)

Meneldor 21.04.2008 14:52

Цитата:

Сообщение от Antuan (Сообщение 133292)
Что-то сложновато описано... Что, где меняем...

Неужели сложно? Текста много, согласен, но ведь всё просто :). Если есть конкретные вопросы, задавайте, буду отвечать.

Antuan 21.04.2008 15:46

Всё, вроде, сделал (не уверен, что верно - проверю)
Но куда вписывать это?
Цитата:

$text = $sape_context->replace_in_page_text($text);

Meneldor 21.04.2008 16:08

Код:

$text = $sape_context->replace_in_page_text($text);
Вставляет контекстные ссылки в текст, который лежит в переменной $text. Реальное использование зависит от Вашего конкретного случая. У Вас может быть какая-нибудь переменная $result, или $html, или ещё как, тогда нужно указывать её.

Antuan 21.04.2008 17:00

Для меня Это сложно... :(
Подожду, кто ещё поставит и расскажет

antsv 23.04.2008 22:36

Meneldor, всё ok. Поставил - работает. Спасибо.

Единственное, что бросилось в глаза:
# db_root_dir => (необязательно) директория для файлов данных, по умолчанию: $ENV{DOCUMENT_ROOT}/<user>

Реально параметр db_root_dir называется db_dir.

Meneldor 24.04.2008 00:00

Цитата:

Сообщение от antsv (Сообщение 135828)
Реально параметр db_root_dir называется db_dir.

И правда - упустил! Спасибо, исправлю!

Antuan 24.04.2008 03:16

Ещё помучился часов 5 методом тыка... Не получилось... Не находит Код на страницах
Хорошо бы на примере описать или То же самое другими словами...

Сейчас появилось объявление об этом Коде. Надеюсь народ подтянется и вместе решим свои проблемы... Для Информации: мой движок - Web-APP

Antuan 24.04.2008 10:45

Есть вопросы. Много. Первый
Автор указывает, что Необходимо пользоваться инструкцией для Контента в РНР. Означает ли Это, что Контентный Код под ПЕРЛ надо вставлять ДО тэга < body > ?

mitriy 24.04.2008 12:25

Скачал код, установил.
Для замены текста использовал
Код:

$text = $sape_context->replace_in_text_segment($text);
Все работает, теперь ждем рекламодателей. :)
Кто скачал код немного раньше, обратите внимание на замечание выше
Цитата:

Реально параметр db_root_dir называется db_dir.
PS: немного не по теме. Когда удалял лишние страницы (на которых мне не нужны контекстные ссылки) случайно удалил и нужные. Теперь они не проявляются при попытке повторного поиска страниц с кодом. Что делать?

Meneldor 24.04.2008 12:27

Цитата:

Сообщение от Antuan (Сообщение 136125)
Есть вопросы. Много. Первый
Автор указывает, что Необходимо пользоваться инструкцией для Контента в РНР. Означает ли Это, что Контентный Код под ПЕРЛ надо вставлять ДО тэга < body > ?

Зависит от того, какую функцию Вы используете. Если replace_in_text_segment, то в неё Вы просто передаёте порции текста, в них модуль подставляет контекстные ссылки, если они есть, и возвращает изменённый текст. Как Вы потом собираете куски текста в код страницы - это известно только программисту конкретного движка. Это в PHP код (грубо говоря) "встраивается" в HTML, в Перле всё наоборот: скрипт на Перле отрабатывает и в течение выполнения делает вывод функцией print кода, собирая HTML-документ. Если используете функцию replace_in_page, то функцию нужно позвать после вывода HTTP-заголовков, но до вывода HTML кода.

Meneldor 24.04.2008 12:29

Цитата:

Сообщение от mitriy (Сообщение 136184)
Теперь они не проявляются при попытке повторного поиска страниц с кодом. Что делать?

По этому поводу пишите на support@sape.ru, индексация страниц - это уже к ним.

Antuan 24.04.2008 13:54

Цитата:

Сообщение от Meneldor (Сообщение 133176)

Заменить старый код вызова:
Код:

my $sape = new SAPE(...);
на новый:
Код:

my $sape = new SAPE::Client (...);
в связи с переименованием класса SAPE в SAPE::Client (старый формат вызова тоже поддерживается, однако будет отключен в будущем).

Означает ли Это, что для обычных ссылок
Это
Код:

"$ENV{DOCUMENT_ROOT}/5кодa8/SAPE.pm" =~ /^(.+)$/;
require $1;
my $sape = new SAPE(
    user => '5кода8',
    host => '<ИМЯ_ХОСТА>', # необязательно, по умолчанию: $ENV{HTTP_HOST}
    charset => 'windows-1251', # необязательно, по умолчанию: windows-1251
);
print $sape->get_links;

Надо поменять на Это
Код:

"$ENV{DOCUMENT_ROOT}/5кодa8/SAPE.pm" =~ /^(.+)$/;
require $1;
my $sape = new SAPE::Client (
    user => '5кодa8',
    host => '<ИМЯ_ХОСТА>', # необязательно, по умолчанию: $ENV{HTTP_HOST}
    charset => 'windows-1251', # необязательно, по умолчанию: windows-1251
);
print $sape->get_links;

Цитата:

Для использования контекстных ссылок необходимо сделать следующее.

Добавить код для создания объекта SAPE::Context с теми же параметрами, что передаются в конструктор SAPE::Client:
Код:

my $sape_context = new SAPE::Context (...);

Означает ли Это, что Код для Контекста будет выглядеть так:
Код:

"$ENV{DOCUMENT_ROOT}/5кодa8/SAPE.pm" =~ /^(.+)$/;
require $1;
my $sape = new SAPE::Context (
    user => '5кодa8',
    host => '<ИМЯ_ХОСТА>', # необязательно, по умолчанию: $ENV{HTTP_HOST}
    charset => 'windows-1251', # необязательно, по умолчанию: windows-1251
);
print $sape->get_links;


Meneldor 24.04.2008 15:01

Цитата:

Сообщение от Antuan (Сообщение 136245)
Означает ли Это, что для обычных ссылок
Это
...
Надо поменять на Это
...

Точно! Только текст "<ИМЯ_ХОСТА>" нужно поменять на реальный хост - например, "mysite.ru" (без кавычек):
Код:

host => 'mysite.ru'
Цитата:

Сообщение от Antuan (Сообщение 136245)
Означает ли Это, что Код для Контекста будет выглядеть так:
Код:

"$ENV{DOCUMENT_ROOT}/5кодa8/SAPE.pm" =~ /^(.+)$/;
require $1;
my $sape = new SAPE::Context (
    user => '5кодa8',
    host => '<ИМЯ_ХОСТА>', # необязательно, по умолчанию: $ENV{HTTP_HOST}
    charset => 'windows-1251', # необязательно, по умолчанию: windows-1251
);
print $sape->get_links;


А вот это неверно. SAPE::Client->get_links просто возвращает HTML-код со ссылками. Контекстные же ссылки должны подставляться в текст Вашего сайта, который Вы как-то должны передать модулю. И для этого есть три функции, их я описал в первом сообщении.

К сожалению, помогать ставить код на все площадки я не могу физически :(. Кто ставил движок на Ваш сайт? Возможно, у Вас есть знакомые Перл-программисты?

Antuan 24.04.2008 15:47

Цитата:

"<ИМЯ_ХОСТА>"
Прописано как положено: www.moi_sait.com
Цитата:

Кто ставил движок на Ваш сайт?
На свои 7 РНР-сайтов и 1 Перл-сайт Код ставил и ставлю сам :cool:

Пишу здесь подробные вопросы, потому что
01. Другим, может, поможет
02. Больше никто не пишет, хотя, наверняка сайтов 95 000: 10 = 9 500 шт в системе, наверняка, имеются. Неужели все удачно поставили?

03. Код для РНР ставят и новички. Поэтому хочется более подробного описания установки кода для контентных ссылок для ПЕРЛ

Ни в РНР, ни в ПЕРЛЕ программистом не являюсь, как и, думаю, 90% посетителей этого форума. Просто - ВэбМастер, каких много. ВэбМастер, готовый учиться и, научившись, помогать другим...

Meneldor 24.04.2008 16:06

Цитата:

Сообщение от Antuan (Сообщение 136341)
02. Больше никто не пишет, хотя, наверняка сайтов 95 000: 10 = 9 500 шт в системе, наверняка, имеются. Неужели все удачно поставили?
03. Код для РНР ставят и новички. Поэтому хочется более подробного описания установки кода для контентных ссылок для ПЕРЛ

Насчёт 2: мало кто успел попробовать, я думаю, да и перловых клиентов у САПЕ, насколько я понимаю, совсем немного. Что же касается 3, согласен, с PHP ситуация попроще, но Перл в принципе посложнее, отсюда и возникают такие проблемы... Один из основных принципов Перла - TIMTOWTDI (there is more than one way to do it), а потому вариантов установки кода - масса :).

Давайте ещё раз. В каких участках кода Вашего сайта подготавливаются данные для вывода на страницу? Например, из базы данных извлекаются статьи, новости, сообщения форума и т.п., после этого они обычно подготавливаются к выводу (например, производится расстановка тегов и т.п.) и либо выводятся на экран функцией print, либо передаются в качестве параметра шаблонизатору:
Код:

# получение данных из базы (пример из доки к DBI)
my $emps = $dbh->selectall_arrayref(
    "SELECT ename FROM emp ORDER BY ename",
    { Slice => {} }
);
unless ($html_template) {
    # вывод на экран, если шаблонизатор НЕ используется:
    foreach my $emp (@$emps) {
        print "Employee: $emp->{ename}\n";
    }
} else {
    # ИЛИ передача в качестве параметра шаблонизатору - в данном примере это HTML::Template
    $template->param(emps => $emps);
}

Так вот самый простой способ использовать КС - это найти место, где данные извлекаются из базы данных, и добавить код для подстановки в эти данные КС:
Код:

# получение данных из базы (пример из доки к DBI)
my $emps = $dbh->selectall_arrayref(
    "SELECT ename, biography FROM emp ORDER BY ename",
    { Slice => {} }
);
# поиск и замена КС в поле biography для каждого сотрудника:
$sape_context->replace_in_text_segment(\$_->{description}) foreach @$emps;

После этого поле biography будет дополнено HTML-кодом с подставленными прямо в текст этого поля КС. Само собой, поля для добавления в них КС Вы выбираете сами в зависимости от конкретной схемы БД :).

Вариант же с $sape_context->replace_in_page будет работать при скриптах такого вида:
Код:

# вывод HTTP-заголовков
print "Content-Type: text/html\n\n";
# установка перехватчика вызовов к print
$sape_context->replace_in_page;

# вывод HTML-документа
print "<html><body>Здесь будет тело документа, текст которого будет целиком проанализирован для расстановки в нём КС.</body></html>"

Или вот так:
Код:

# вывод HTTP-заголовков
print "Content-Type: text/html\n\n";
# установка перехватчика вызовов к print
$sape_context->replace_in_page;

# вывод HTML-документа
print "<html><body>Здесь будет тело документа, но только в <sape_index>этом блоке</sape_index> и ещё <sape_index>вот в этом блоке текста</sape_index> будут подставлены КС.</body></html>"

Повторюсь: вариантов масса. Я привёл лишь пару примеров, но возможно, что они добавят ясности.

Antuan 24.04.2008 17:20

В частности, движок на Файлах
При добавлении Кода в Хеадер перед print:
Цитата:

# вывод HTTP-заголовков
print "Content-Type: text/html\n\n";
# установка перехватчика вызовов к print
$sape_context->replace_in_page;
# вывод HTML-документа
print "<html><body>Здесь будет тело документа, текст которого будет целиком проанализирован для расстановки в нём КС.</body></html>"
У меня так:
Цитата:

print "Content-type: text/html\n\n";
# установка перехватчика вызовов к print
$sape_context->replace_in_page;

print qq~<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
Сайт не отображается: Белый чистый лист :(

Meneldor 24.04.2008 17:32

Цитата:

Сообщение от Antuan (Сообщение 136410)
Сайт не отображается: Белый чистый лист :(

Боюсь, что такой диагностики недостаточно :(. Нужны хотя бы сообщения из логов, чтобы увидеть, что же пошло не так. Напишите мне по ICQ, плиз.

yarnik 25.04.2008 11:59

в старой версии, если тормозит сервер, то файл == 0
в связи с чем 2 вопроса:
1. почему не сделали в старой функцию if ($response eq "") { exit; }
2. реализовано ли оно в новой версии?

Meneldor 25.04.2008 12:44

Цитата:

Сообщение от yarnik (Сообщение 137006)
в старой версии, если тормозит сервер, то файл == 0
в связи с чем 2 вопроса:
1. почему не сделали в старой функцию if ($response eq "") { exit; }
2. реализовано ли оно в новой версии?

Не могу вспомнить, как это было в старой версии, но мне кажется, что всё же файл не мог обнуляться в этом случае. Как бы то ни было, в новой версии файл пишется на винт только в случае получения правильных данных, а иначе обновление файла откладывается на 10 минут. Кроме того, добавлена поддержка нескольких диспенсеров, как это сделано в PHP-модуле.

atbit 26.04.2008 18:41

Попытался установить контекстный код, пока безрезультатно. Нажимаю "Контекстные страницы" - заказать переиндексацию, ничего особенно не происходит.
код подключается так:
my $sape_context = SAPE::Context->new( @{$self->sape_config} );
$sape_context->replace_in_text_segment( \$self->{Doc}{doc_text} );
в логе происходит warning
[Sat Apr 26 18:34:03 2008] page.pl: Use of uninitialized value in substitution (s///) at ../lib/SAPE.pm line 360.
[Sat Apr 26 18:34:03 2008] page.pl: Use of uninitialized value in substitution (s///) at ../lib/SAPE.pm line 367.

$self->{Doc}{doc_text} при этом содержит основной контент страницы.

Еще тут сказано смотреть инструкцию по установке контекста для PHP, но не могу найти нигде эту инструкцию. Ссылку на новый SAPE.pm нашел только тут на форуме. Прямо как Microsoft.

Antuan 27.04.2008 00:13

Установка кода отображения гипертекстовых ссылок непосредственно из контента страницы (контекстные ссылки)

kopytov 28.04.2008 01:04

Автору - респект. Давно ждал.

А насколько активно покупают контекстные ссылки сейчас? Робот нашел 464 контекстные страницы, код стоит уже четыре дня, но ни одной ссылки так и не купили. Хотя разного контента на этих страницах довольно много, обычные ссылки продаются на ура. Как можно проверить, нет ли ошибок?

limbo 28.04.2008 12:02

автору - спасибо.

Meneldor 28.04.2008 19:25

Цитата:

Сообщение от atbit (Сообщение 138186)
Попытался установить контекстный код, пока безрезультатно. Нажимаю "Контекстные страницы" - заказать переиндексацию, ничего особенно не происходит.

Попробуйте в вызов SAPE::Context->new добавить параметры force_show_code => 1 и verbose => 1 - после этого в коде страницы должны появиться теги <sape_index> ... </sape_index>. Если они есть, значит, всё ОК, теперь ждите окончания переиндексации. В любом случае - пишите в ICQ, если что, будем решать.

Цитата:

Сообщение от kopytov (Сообщение 139182)
Автору - респект. Давно ждал.

А насколько активно покупают контекстные ссылки сейчас?

Рад, что пригодилось :). Насколько активно - не могу сказать, это уже не от языка зависит, а от тенденций в САПЕ в принципе. Ну у меня лично на 50 обычных новых ссылок приходится 1 контекст, как-то так :).

Meneldor 28.04.2008 19:44

Уточнение! Если Вы ранее использовали параметр filename при вызове конструктора SAPE, теперь вместо него используйте параметр db_dir, который содержит путь к директории, в которую будут сложены файлы со ссылками.

3sspbru 04.05.2008 21:04

Автору - огромное спасибо! Все работает замечательно!

Meneldor 14.05.2008 15:50

Вложений: 1
В модуле SAPE.pm была обнаружена проблема: обработчик replace_in_page устанавливался автоматически в любом случае. Это не могло принести вреда, однако выполнялся лишний код и могли сыпаться предупреждения в логи, если используется модуль warnings. Спасибо пользователю =Sten= за обнаружение проблемы, его терпение и помощь в поиске и исправлении бага! Просьба тех, кто тестировал модуль, обновить его на приложенный и сообщить, если возникнут проблемы.

yarnik 05.07.2008 13:21

Meneldor,
надо всем уведомление послать что модуль желательно заменить.

Meneldor 07.07.2008 09:08

Цитата:

Сообщение от yarnik (Сообщение 190905)
Meneldor,
надо всем уведомление послать что модуль желательно заменить.

Да надо просто обновить модуль, доступный для скачивания :). Займусь.

Al Pacino 13.01.2009 20:28

Meneldor, а есть какой-нибудь скрипт, чтобы вручную это всё не устанавливать, а залить этот скрипт на хост и запустить, и пусть он контекстный код установит сам?

Meneldor 13.01.2009 23:10

Цитата:

Сообщение от Al Pacino (Сообщение 355754)
Meneldor, а есть какой-нибудь скрипт, чтобы вручную это всё не устанавливать, а залить этот скрипт на хост и запустить, и пусть он контекстный код установит сам?

Звучит как сказка :). Нет, к сожалению, такого скрипта нет и не может быть - вариантов реализации вывода кода на Перле миллиарды. Главный принцип Перла - TIMTOWTDI, there is more than one way to do it :).

Al Pacino 25.01.2009 00:15

Цитата:

Сообщение от Meneldor (Сообщение 355891)
Звучит как сказка . Нет, к сожалению, такого скрипта нет и не может быть - вариантов реализации вывода кода на Перле миллиарды. Главный принцип Перла - TIMTOWTDI, there is more than one way to do it .

может я что-то не понимаю, но смотрите: у нас есть файл. Почему нельзя скриптом дописать в этот файл данные, которые называются сапокодом? То есть чтобы скрипт автоматически модифицировал другой файл?

Meneldor 25.01.2009 19:47

Цитата:

Сообщение от Al Pacino (Сообщение 365423)
может я что-то не понимаю, но смотрите: у нас есть файл. Почему нельзя скриптом дописать в этот файл данные, которые называются сапокодом? То есть чтобы скрипт автоматически модифицировал другой файл?

А почему именно Perl тогда? Библиотека, которая обсуждается в топике, нужна как раз для случаев, когда динамические страницы генерятся Perl'ом. Для всех остальных случаев есть PHP-код, который официально поддерживается SAPE.

Al Pacino 30.01.2009 23:25

Цитата:

Сообщение от Meneldor (Сообщение 365895)
А почему именно Perl тогда? Библиотека, которая обсуждается в топике, нужна как раз для случаев, когда динамические страницы генерятся Perl'ом. Для всех остальных случаев есть PHP-код, который официально поддерживается SAPE.

Понял, спасибо за развёрнутый ответ.

yarnik 02.02.2009 18:35

я слышал что поисковики для проверки доставляют к адрусу левую инфу типа www.site.ru/?лабуда
тем самым проверяя на измененность страницы. как это можно обойти?
если даже создать список разрешенных ('/','/?req=news','/?req=news&list=(?)')... , то как запретить вырезать все "левое"
кто то решал подобные проблемы?

Добавлено через 20 часов 19 минут
нашли решение! Никите спасибо!
1. до запуска кода сапы - генерируем нужный нам $ENV{REQUEST_URI}
2. передаем его собственно модулю сапы
SAPE->new(
request_uri => $request_uri
);

3sspbru 09.02.2009 09:56

С конца января перестали отображаться контекстные ссылки. Старые отображаются, а новые висят в ерроре. Что делать?
Используется модуль на Perl.

uncia 09.10.2009 05:44

Нет доступа на запись к файлу данных (/words.db)
 
Сервер Apache 1.3.41 + mod_perl 1.30
После установки нового модуля спонтанно вылетает "SAPE ERROR: Нет доступа на запись к файлу данных (/words.db): пФЛБЪБОП Ч ДПУФХРЕ. Выставите права 777 на папку.", т.е. может 30 раз нормально пройти, потом 30 раз с ошибкой. Права выставлены правильно, к тому же старый (0.9) модуль работает без проблем.

Код:

ls -l ..
drwxrwxrwx 2 roman roman 4096 2009-10-09 05:15 90da39[..........]/

Код:

ls -l
-rw-r--r-- 1 nobody nobody 254369 2009-10-09 04:58 links.db
-rw-r--r-- 1 roman  roman    5256 1901-12-13 23:15 sape.pm
-rw-r--r-- 1 nobody nobody    202 2009-10-09 05:15 words.db

После перезагрузки апача некоторое время ошибок нет. Создается впечатление, что существует какая-то не стыковка с mod_perl.

Да, кстати, не обозначает ли эта запись "Нет доступа на запись к файлу данных (/words.db)", что модуль пытается открыть файл в корне сервера :eek:?
Код:

        open my $fh, '>>', $db_file
            or return $self->_raise_error("Нет доступа на запись к файлу данных ($db_file): $!. Выставите права 777 на папку.");

Какие соображения?

Meneldor 11.10.2009 16:19

Попробуйте передавать в конструктор путь к директории с links.db явно через параметр db_dir - возможно, в связке с mod_perl дефолтное поведение работает криво, не тестировалось.


Часовой пояс GMT +3, время: 23:20.

Работает на vBulletin® версия 3.8.7.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
SAPE.RU — система купли-продажи ссылок с главных и внутренних страниц сайтов.