| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Системное программирование > Не могу на сервере исправить index.htm |
| Автор: Гость_Артем 31.8.2005, 15:22 |
| Написал скрипт на перле которая ходит по пакпкам на сервере удаляет все ненужные файлы и соответсвенно удаляет ссылки на них из индекса, удаляет все исправно , открывает индекс исправно исправляет тоже нормально( в массиве куда я закинул содержимое файла), но в итоге не записывает в файл, я пробовал в index.html и index.htm то есть index.htm существует а index.html нет, открывать и закравать файл не забывал, може это проблемы с правами доступа? |
| Автор: sharq 31.8.2005, 15:30 | ||
так и есть, выставь права доступа на запись! |
| Автор: Гость_Артем 31.8.2005, 15:50 |
| Не получилось - попробовал поставить прямо в скрипте chmod 0777, $File; ($File это переменная где находится полный путь к файлу), поставил через фтп тоже не изменило, на моем компе когда тестировал все изменяло, то есть проблема как я понял не правильности ситаксиса, а в спецификации Unixа, до того как я изменил доступ стояло по умолчанию 0755 |
| Автор: sharq 31.8.2005, 16:31 |
| Гость_Артем попробуй при записи ввести лог сообщений, явно где-то косяк, либо файл не находит, либо не может записать. |
| Автор: Usya 1.9.2005, 15:43 |
| 1) Проверь, не забыл ли случайно поставить > перед файлом? Без приколов. Иногда сам пропускаю 2) Если запускаешь через cron, насколько знаю, путь должен быть полным вроде /home/.../public_html/.../index.htm. Возможно и здесь что-нибудь такое. А по-хорошему бы кусок кода привел бы. P.s. А ты не пробовал зарегистрироваться, чтоб не плодить темы с одинаковыми названиями, а ненужное удалять? |
| Автор: Guest 1.9.2005, 16:26 |
| 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 |
| Все пацаны разобрался проблемы были с путями неправильно путь я писал там поэтому записать не получалось |
| Автор: Usya 1.9.2005, 18:10 | ||||
| Немного поздновато отправил Кстати, в следующие разы в таких случаях пиши вместо open(NewIndex, ">$x"); open(NewIndex, ">$x") || die 'Error!'; или open(NewIndex, ">$x") || print $!. Да и еще. Вместо
лучше
При этом строка $_=$stroka - не нужна, не нужен массив и экономится некоторое время на перегонку в массив (для маленьких файлов практически не заметно)... |
| Автор: Kiber_rat 2.9.2005, 05:07 | ||
| Скорее всего, если есть возможность, посмотри error_log апача. Желательно знать с какими правами выполняется скрипт. Елси это юзер web, www, apache или что-то такое, то у него должны быть права на запись в файл. Если скрипт выполняется под тем же юзером под которым ты заходишь на сервер (если у тебя есть ssh доступ) то проверь что этот же юзер является и владельцем файла. Что бы проверить права создай простой cgi скрипт, что-то типа
Попробуй поставить права 666 на твой index.html, хотя это не очень хорошее решение, но если скрипт отработает нормально то грабли именно в правах. Обязательно проверь права на папку в которой лежит index.html... Будут непонятки - спрашивай... P.S. Это вобще то тема для CGI программирования, будь внимательнее |
| Автор: Guest 3.9.2005, 12:52 |
| спасибо за совет, это у меня первая программа на перле конечно где-то мог пропарится |