Forum Webscript.Ru
Программирование => Perl => Тема начата: docker от 23 Мая 2005, 11:12:24
-
Добрый день!
Ситуация следующая. Сайт переносится с одного хостинга на другой.
В одном из разделов используется dbm база данных, и perl скрипт к ней обращается.
dbmopen(%db,$root_path."cgi/db/news",0640) || print "$!";
foreach (sort { $b <=> $a } keys %db){
.....
.....
в папке cgi/db находится файлы news, news.db, news.dir, news.pag и другие.
Все это было перенесено со старого хостинга и в том же виде выложено на новый.
Но при запуске этого скрипта, обращающегося к базе новостей, выводится:
Inappropriate file type or format
Попытки изменения прав доступа на папку cgi, db - ситуацию не изменили.
Вопросы:
Что нужно сделать чтобы тот же скрипт подцепил dbm-файлы в случае, если все копируется с другого хостинга.
Другой выход - создать пустую одноименную базу данных (сохранение данных не актуально) этого же формата, главное чтобы этот же скрипт с ней работал. Нашел только функцию dbmopen, где уже при созданиии нужно указывать пользователя и его пароль, что мне совсем непонятно для чего, непонятно так же как создавать там структуру таблицы и все остальное. В мануалах тех, которые я нашел, ничего про это не было сказано.
Еще буду рад за любые достойные мануалы по работе с dbm.
Спасибо!
-
А до этого хостинг у вас не виндовый был случайно?
По моему dbm файлы получают расширения pag и dir только на виндах. на никсах создается один файл с расширением db. Незнаю насколько в этом случае сохраняется кроссплатформенность.
-
cr4ck3r расширение не имеет значения.
docker какой DB менеджер использовался в скрипте?
Если старый хостинг еще существует, нужно написать конвертор в csv и провести обратную операцию на новом сервере.
Все это происходит из-за отличия версий DB менеджеров на этих системах.
-
> docker какой DB менеджер использовался в скрипте?
На старом хостинге? Информации об этом нет.
Это можно узнать только через ssh или напрямую спросив у провайдера? Аналога phpinfo в perl-е нет?
> Если старый хостинг еще существует, нужно написать конвертор в csv и провести обратную операцию на новом сервере.
А какой операцией осуществляется переконвертация csv в dbm на новом хостинге? Можно об этом поподробней пожалуйста. Спасибо!
-
docker:
> docker какой DB менеджер использовался в скрипте? На старом хостинге? Информации об этом нет.
У тебя разные скрипты на этих серверах??
Я имел ввиду в самой верхушке скрипта есть подключение менеджера DB командой use. Посмотри.
docker:
А какой операцией осуществляется переконвертация csv в dbm на новом хостинге? Можно об этом поподробней пожалуйста.
Можно. Пишем скрипт.
1) Открываем csv файл
2) Считываем данные и разбиваем на хеш ключ=> значение по сепаратору
3) Открываем dbm базу
4) Записываем хеш
Все.
-
> У тебя разные скрипты на этих серверах??
> Я имел ввиду в самой верхушке скрипта есть подключение менеджера DB командой use. Посмотри.
Там ничего такого нет,только:
use CGI qw(param);
use LWP::UserAgent;
По-умалчанию значит какой-то используется? А какой?
-
Да и еще, на новом хостинге мне создать новую одноименную базу через dbmopen?
А какие туда имя польователя и пароль записывать? Любые? Просто насколько я понял, этот логин и пароль нигде не используется.
??
-
По умолчанию используется один из драйверов: dbm, ndbm, sdbm, gdbm, или Berkeley DB. Точнее тебе никто не скажет.