Автор Тема: Определить место положения файла  (Прочитано 5728 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Billi

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 60
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Есть скрипт проверяющий несколько сайтов, и отчет об этой проверке сохроняет в файл(файл на ходится в одной директории со скриптом). Если просто запусть его
все ок, при запуске через corn отчет не сохраняется, повсей видимостит скрипт не может открыть файл, так ли это?
Если это так то как можно из скрипта определить его место положение (полный путь)?

Я провел простой  тест

#!/usr/bin/perl
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
 $mon=$mon+1;
 $year=$year+1900;
 $s=" $mday.$mon.$year $hour:$min:$sec";
  open  FILE,">>crontest.dat";
  print FILE "$s\\n";
  close FILE;

Результат аналогичный :(
Но я хотя бы знаю, что ни чего не знаю

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Определить место положения файла
« Ответ #1 : 28 Июля 2004, 17:42:06 »
open FILE,">>", "./crontest.dat" or die "Can\'t open file: $!";

perldoc Cwd
The documentations is your friend

Оффлайн Billi

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 60
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Определить место положения файла
« Ответ #2 : 28 Июля 2004, 18:10:26 »
open FILE,">>./crontest.dat";
тоже работать не захотел :(
написал поный путь как в crontab заработало вроде.

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

Оффлайн Alone

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 182
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Определить место положения файла
« Ответ #3 : 28 Июля 2004, 18:13:45 »
попробуй в начале скрипта поставить:
$0 =~ m|(.*)/[^/]+|;
chdir ($1) if ($1);

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Определить место положения файла
« Ответ #4 : 28 Июля 2004, 18:18:53 »
Цитировать
Billi:
Cwd тоже проблема он на серваке не стоит и установить врятли

perl какой версии стоит?
perl -v
это стандартный модуль.
The documentations is your friend

Оффлайн Billi

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 60
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Определить место положения файла
« Ответ #5 : 28 Июля 2004, 18:22:47 »
Спасиб :)
$0
помогло, а то я уже совсем растраиватся стал, переменных окружения($ENV) тоже нет их повсе видимости Apache заполняет.
Но я хотя бы знаю, что ни чего не знаю

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Определить место положения файла
« Ответ #6 : 28 Июля 2004, 18:24:28 »
Цитировать
Billi:
open FILE,">>./crontest.dat";

open FILE,">>", "./crontest.dat" or die "Can\'t open file: $!";
The documentations is your friend

Оффлайн Billi

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 60
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Определить место положения файла
« Ответ #7 : 28 Июля 2004, 18:25:30 »
Module: Perl      Version: 5.00503
Насколько я понимаю очень старый
Но я хотя бы знаю, что ни чего не знаю

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Определить место положения файла
« Ответ #8 : 28 Июля 2004, 18:34:46 »
на будующее:
кусок or die "$!" выведет тебе причину по которой то или иное действие не могло произойти (в данном случае открытие файла).
The documentations is your friend

Оффлайн Billi

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 60
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Определить место положения файла
« Ответ #9 : 28 Июля 2004, 18:48:52 »
про or die я в курсе, но логов но серваке тоже нет :)

open FILE,">>", "./crontest.dat" or die "Can\'t open file: $!";
тоже не работает

после этого
............
opendir (DIR, \'.\');
@files = readdir(DIR);
closedir(DIR);
print FILE @files;
.........
оказалась что директория \'.\' на момент  запуска являлась корневой директорией моего виртуального сервера.

От чего это может зависеть (какая директория является текущей в случая запуска из под cron)?
« Последнее редактирование: 28 Июля 2004, 18:54:53 от Billi »
Но я хотя бы знаю, что ни чего не знаю

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Определить место положения файла
« Ответ #10 : 28 Июля 2004, 19:07:26 »
корневая.
сделай сначала cd /path/to/your/folder; perl ./runmyfile.pl
The documentations is your friend

Оффлайн Billi

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 60
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Определить место положения файла
« Ответ #11 : 28 Июля 2004, 19:47:09 »
ok Спасиб
Но я хотя бы знаю, что ни чего не знаю

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28