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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не могу на сервере исправить index.htm 
:(
    Опции темы
Гость_Артем
Дата 31.8.2005, 15:22 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Написал скрипт на перле которая ходит по пакпкам на сервере удаляет все ненужные файлы и соответсвенно удаляет ссылки на них из индекса, удаляет все исправно , открывает индекс исправно исправляет тоже нормально( в массиве куда я закинул содержимое файла), но в итоге не записывает в файл, я пробовал в index.html и index.htm то есть index.htm существует а index.html нет, открывать и закравать файл не забывал, може это проблемы с правами доступа?
  Вверх
sharq
Дата 31.8.2005, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 3
Всего: 28



Цитата
може это проблемы с правами доступа?


так и есть, выставь права доступа на запись!


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
Гость_Артем
Дата 31.8.2005, 15:50 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Не получилось - попробовал поставить прямо в скрипте chmod 0777, $File; ($File это переменная где находится полный путь к файлу), поставил через фтп тоже не изменило, на моем компе когда тестировал все изменяло, то есть проблема как я понял не правильности ситаксиса, а в спецификации Unixа, до того как я изменил доступ стояло по умолчанию 0755
  Вверх
sharq
Дата 31.8.2005, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 3
Всего: 28



Гость_Артем попробуй при записи ввести лог сообщений, явно где-то косяк, либо файл не находит, либо не может записать.

smile

Это сообщение отредактировал(а) sharq - 31.8.2005, 16:32


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
Usya
Дата 1.9.2005, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



1) Проверь, не забыл ли случайно поставить > перед файлом? Без приколов. Иногда сам пропускаю smile
2) Если запускаешь через cron, насколько знаю, путь должен быть полным вроде /home/.../public_html/.../index.htm. Возможно и здесь что-нибудь такое.

А по-хорошему бы кусок кода привел бы.

P.s.
А ты не пробовал зарегистрироваться, чтоб не плодить темы с одинаковыми названиями, а ненужное удалять? smile

Это сообщение отредактировал(а) Usya - 1.9.2005, 15:45
--------------------
Я не волшебник, я только учусь...
PM MAIL   Вверх
Guest
Дата 1.9.2005, 16:26 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











P.s.
А ты не пробовал зарегистрироваться, чтоб не плодить темы с одинаковыми названиями, а ненужное удалять?

За это извеняюсь, инет запарился и с дуру два раза нажал.

if ($file eq 'index.htm' or $file eq 'index.html')
{
chmod 0777, $x; # в $file находится имя открываемого файла в $x полный путь
print "$file\n";
open(OldIndex, "$x") || "Error open $file: $!";
@OldIndex=<OldIndex>;
close(OldIndex);
foreach $stroka (@OldIndex)
{
$_=$stroka;

if (m/<a ID="A2" href.*($BADWORDS).*a><br>/i) # сдесь я нахожу нужные мне строки для удаления
{
s/<a.*<br>//i;

$stroka=$_;

}
}
open(NewIndex, ">$x");
#print"@OldIndex\n"; #выводтся при неоходимости содержание массива
print NewIndex @OldIndex;
close(NewIndex);
chmod 0755, $x;
}

что сделал не так ну чесно не знаю, скрипт первой легкости, выводил даже содеражание массива который хочу записать все нормально
  Вверх
Guest
Дата 1.9.2005, 17:32 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Все пацаны разобрался проблемы были с путями неправильно путь я писал там поэтому записать не получалось
  Вверх
Usya
Дата 1.9.2005, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Немного поздновато отправил smile

Кстати, в следующие разы в таких случаях пиши вместо open(NewIndex, ">$x");

open(NewIndex, ">$x") || die 'Error!';

или

open(NewIndex, ">$x") || print $!.

Да и еще.
Вместо

Код

open(OldIndex, "$x") || "Error open $file: $!";
@OldIndex=<OldIndex>;
close(OldIndex);
foreach $stroka (@OldIndex)
{
$_=$stroka;
............
}


лучше

Код

open(OldIndex, "$x") || "Error open $file: $!";
while(<OldIndex>)
{
............
}
close(OldIndex);


При этом строка $_=$stroka - не нужна, не нужен массив и экономится некоторое время на перегонку в массив (для маленьких файлов практически не заметно)...

Это сообщение отредактировал(а) Usya - 1.9.2005, 18:25
--------------------
Я не волшебник, я только учусь...
PM MAIL   Вверх
Kiber_rat
Дата 2.9.2005, 05:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MACMANIAC
**


Профиль
Группа: Участник
Сообщений: 276
Регистрация: 18.4.2002
Где: Ashdod, Israel

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



Скорее всего, если есть возможность, посмотри error_log апача. Желательно знать с какими правами выполняется скрипт. Елси это юзер web, www, apache или что-то такое, то у него должны быть права на запись в файл. Если скрипт выполняется под тем же юзером под которым ты заходишь на сервер (если у тебя есть ssh доступ) то проверь что этот же юзер является и владельцем файла.
Что бы проверить права создай простой cgi скрипт, что-то типа
Код

#!/usr/bin/perl
use strict;
use warnings;
use CGI qw(:standard);
print header();
print `whoami`;

Попробуй поставить права 666 на твой index.html, хотя это не очень хорошее решение, но если скрипт отработает нормально то грабли именно в правах. Обязательно проверь права на папку в которой лежит index.html...
Будут непонятки - спрашивай...
P.S. Это вобще то тема для CGI программирования, будь внимательнее smile


--------------------
Best regards!                                                             
@..@_____Ku6ep
=*=______\______KPbIC
Код
print join "",map{chr}(split/(\w{2})/,hex(int(2175.57302796298**2)))
PM WWW ICQ Skype Jabber YIM   Вверх
Guest
Дата 3.9.2005, 12:52 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











спасибо за совет, это у меня первая программа на перле конечно где-то мог пропарится
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: Системное программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к системному программированию на Perl
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


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

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


 




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


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

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