Модераторы: ginnie, korob2001
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Баг с директориями, а точнее с созданием файлов. 
:(
    Опции темы
Graf Zeppelin
Дата 10.4.2004, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 28.3.2004

Репутация: нет
Всего: 1



В общем у меня такой глюк. У меня сайт находится на сервере h1. И у меня проблема: я создал pl скрипт кторый должен генерить index.htm в главной директории(путь до неё я пишу http://мойсайт.h1.ru/). Но! Файл там не создаётся. У меня на домащнем всё было в порядке. А на сервере h1 этот индекс не генерится если указать не только имя файла, но и директорию. Если же просто написать open (INDEX, "> index.htm") он создаст этот индекс! Но в директории cgi-bin. В начале я подумал что фишка в том, что нужно писать адрес на файл полностью(тоесть через файловую систему сервера), но я попробовал другой скрипт, который закачивает в коренную директорию картинки и он сработал. Обьясните плиз в чём тут дело?
P.S. Файл создания index.htm подключается к главному файлу из которого и запускается. С помощью комманды require генератор.pl =)
P.P.S. Другой подключающийся скрипт с функциями работает как часы =)
--------------------
Jah, help me!
PM MAIL   Вверх
korob2001
Дата 10.4.2004, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 6
Всего: 61



Попробуй так:
Код

#!/usr/bin/perl -w
use strict;
use warnings;
use CGI;
use CGI::Carp qw( fatalsToBrowser );
my $cgi = new CGI;
my $script = $ENV{ SCRIPT_NAME };

open(FILE, "> /home/localhost/www/index.htm") or die $!;
print FILE $cgi->start_html( -title => 'Главная страница'),
          $cgi->center( $cgi->h1("Эта странчка создана программой $script!") ),
          $cgi->end_html;
close( FILE ) or die $!;
print $cgi->header( -charset => 'Windows-1251' );
print $cgi->start_html( -title => "Создал гланую странцу" ),
     $cgi->start_center,
     $cgi->h1("Создал главную страничку!"),
     $cgi->end_center,
     $cgi->p('Посмотреть можно ' .
              $cgi->a( { -href => "/index.htm" }, "здесь" ) ),
     $cgi->end_html;

У меня работает, правда тестировал на локальном сервере.
Почитай на хостинге как правильно указывать относительный путь. Если не разберёшься, то попробуй поспользоваться такой схемой.
Допустим наша программа-CGI лежит в каталоге cgi-bin/ и называется mkpag.pl, то для того что бы выйти из данного каталога на уровень выше нужно указать примерно такой путь ../.
Кпримеру у нас такая схема:
Код

home/_
      |_www/        <- Сюда хотим создать файл index.htm
      |
      |_cgi-bin/      <- Здесь лежит наш скрипт

Для этого нам нужно прописать такой путь:
../www/index.htm
данный путь означает выйти из текущего каталога на уровень выше и зайти в каталог www/ и открыть файл index.htm

Удачи.

Это сообщение отредактировал(а) korob2001 - 10.4.2004, 12:54


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Graf Zeppelin
Дата 10.4.2004, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 28.3.2004

Репутация: нет
Всего: 1



Спасибо огромное! Сработало!! Я чессно просто не знал как подняться на папку вверх =) Блин, биг сэнкс. (Сработало ../www/index.htm)

Это сообщение отредактировал(а) Graf Zeppelin - 10.4.2004, 21:46
--------------------
Jah, help me!
PM MAIL   Вверх
GoodBoy
Дата 12.4.2004, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: нет
Всего: 83



Господа! Есть чудесная переменная окружения DOCUMENT_ROOT, которая указывает на корневой каталог документов сайта (т.е. тот каталог, куда мы попадаем набрав в браузере http://мойсайт.h1.ru/).
В связи с этим я могу порекомендовать открывать файл на запись вот таким методом:
Код
open(FILE, "> $ENV{DOCUMENT_ROOT}/index.htm") or die $!;

Из этого мы имеем следующие преимущества:
1) Нам не надо знать реальный физический путь к домашнему каталогу
2) При переносе сайта на другой хостинг, в случае несовпадения путей, ничего не надо менять.
:-)))))))))


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: Системное программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к системному программированию на Perl
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0443 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.