Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Ошибка feof(): 3 is not a valid stream resource
Покинул форум
Сообщений всего: 4
Дата рег-ции: Окт. 2008
Помог: 0 раз(а)
Что-то не так в этом коде? Во всех источниках он описан как работоспособный. Более того, он поначалу даже читал содержимое файла. Но перестал.. Что могло произойти?
$filename = 'main.hd'; // файл лежит рядом с .php файлом
if (filesize($filename)) {
$hfile = fopen ($filename,"r");
Warning: feof(): 3 is not a valid stream resource in C:\Program Files\Apache Group\Apache2\htdocs\test_index.php on line 16
Warning: fgets(): 3 is not a valid stream resource in C:\Program Files\Apache Group\Apache2\htdocs\test_index.php on line 17
Warning: fclose(): 3 is not a valid stream resource in C:\Program Files\Apache Group\Apache2\htdocs\test_index.php on line 22 и т.д.
Champion
Отправлено: 22 Октября, 2008 - 15:14:05
Активный участник
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
Странно. А fopen ошибок, как я понял, не выдает? Попробуйте вывести значение переменной $hfile сразу после fopen. Вы привели весь участок кода? Может быть после fopen вы производите какие6-нибудь присвоения $hfile или удаляете файл?..
valenok
Отправлено: 22 Октября, 2008 - 16:41:14
Здесь могла бы быть ваша реклама
Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006 Откуда: Israel
Помог: 3 раз(а)
Стандартная ошибка у этой функции
Warning: fgets(): supplied argument is not a valid stream resource
А что это за тройка и откуда она берется..
Оформите пожалуйста код так чтоб он был читабелен и было ясно где какая строка.
----- Truly yours, Sasha.
Champion
Отправлено: 22 Октября, 2008 - 16:50:59
Активный участник
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
valenok пишет:
Warning: fgets(): supplied argument is not a valid stream resource
А что это за тройка и откуда она берется..
Вот это-то и интересно - вроде как fopen ошибок не дала, значит в $hfile хранится правильный дескриптор. А ворнинг говорит обратное. 3 - как раз и есть этот дескриптор. Странная штука
Дмитрий.К
Отправлено: 23 Октября, 2008 - 08:52:45
Новичок
Покинул форум
Сообщений всего: 4
Дата рег-ции: Окт. 2008
Помог: 0 раз(а)
Спасибо..наверное это был сбой в работе сервера..хотя перезагрузка компьютера не помогала.. может это было связано с тем, что засунута в пользовательскую функцию..вообщем я переписал код с использованеим функции file..все нормализовалось..
Champion
Отправлено: 23 Октября, 2008 - 08:57:50
Активный участник
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
Дмитрий.К пишет:
наверное это был сбой в работе сервера..хотя перезагрузка компьютера не помогала
Это точно не сбой в работе сервера)
Дмитрий.К пишет:
может это было связано с тем, что засунута в пользовательскую функцию
О чем речь? ЧТО туда была засунута?
asked86
Отправлено: 25 Октября, 2008 - 17:50:15
Гость
Покинул форум
Сообщений всего: 82
Дата рег-ции: Окт. 2008
Помог: 0 раз(а)
[+][+]
На будующее такие ошибки решаются следующим образом!
1) Если текста не много, то вырезаем по одной строчке, и каждый раз ее компилим и смотрим на ее поведение !
2) Если что то не получпется вставляем эту строку на место, и вырезаем другую и опять смотрим на поведение !
3) Попробуйте заменить переменные другими именами, как не странно, но я с такими ошибками сталкивался ! да да это правда !
Champion
Отправлено: 25 Октября, 2008 - 18:01:03
Активный участник
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
asked86 пишет:
то вырезаем по одной строчке,
Если уж на то пошло, то так будет гораздо быстрее:
1-Вырезаем половину кода.
2-Если ошибка осталась, работаем по этому же алгоритму с другой половиной кода.
3-Если ошибка убралась, возвращаем вырезанное на место и вырезаем половину того, что только что вернули
4-возвращаемся в п.2 до тех пор, пока не найдем ошибку
asked86
Отправлено: 25 Октября, 2008 - 19:42:22
Гость
Покинул форум
Сообщений всего: 82
Дата рег-ции: Окт. 2008
Помог: 0 раз(а)
[+][+]
Вот вы над этим смеетесь, а в какой то из книг знаменитого профессионала в области программирования, это один из методов поиска ошибок и выявления причин!
Иногда одна ошибка порождает все другие, и для ее выяснения так и следует их искать !
Champion
Отправлено: 25 Октября, 2008 - 19:47:36
Активный участник
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
Кстати, можно не вырезать, а пользоваться комментированием))
asked86
Отправлено: 25 Октября, 2008 - 19:48:47
Гость
Покинул форум
Сообщений всего: 82
Дата рег-ции: Окт. 2008
Помог: 0 раз(а)
[+][+]
Я тоже не признавал этот метод, но когда кодил серьезный проект то потом осознал.
Было такое что искал ошибку неделю, хотя и по процедурам небольшим все разбито было, ошибку которую выдавал компилятор, она была из-за ошибки на 10 строк выше о которой, сам компилятор молчал ! И такое бывает, так что не надо быть скептиком !
(Добавление)
На счет комментариев да, полностью с вами согласен !!!
Вы правы но сильно не стоит комментировать ! Очевидные строки комментировать не стоит ,
ну типа запись в файл, чтение , цикл , деление и т.п, а то начинающие начитаются про комментарии, и начинают все комментировать, а во время отладки собственные комменты бесят !
(Добавление)
Ну в конце концов есть другие опрераторы: Альтернатива,
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
asked86 пишет:
ошибку которую выдавал компилятор, она была из-за ошибки на 10 строк выше о которой, сам компилятор молчал
Это наверное незакрытая чткобка или что-то в этом роде... Структурное программирование помогает быстро найти такую ошибку, если вдруг она получилась... В общем тут много мнений, много способов Ошибки разные бывают
asked86
Отправлено: 25 Октября, 2008 - 20:24:16
Гость
Покинул форум
Сообщений всего: 82
Дата рег-ции: Окт. 2008
Помог: 0 раз(а)
[+][+]
Нет эта ошибка была следствием ошибки на 10 строк выше (о ней молчал компилятор), это была не не закрытая скобка!
Если вы этому методу не доверяете, я вас не заставлю, вернее даже убедить не смогу !
Даже если вы будете строить программы в виде объектов что вам мешает их также быстро находить(ошибки), ООП это штука, но когда чтото пишешь только один, не стоит о нем даже думать !
valenok
Отправлено: 25 Октября, 2008 - 20:33:01
Здесь могла бы быть ваша реклама
Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006 Откуда: Israel
Помог: 3 раз(а)
Это значит что 10ю строками выше как раз ошибки не было, и никакой не компилятор, а интерпретатор, делал именно то что ему приказано было делать. Если вы неделю не могли справиться с отладкой, то боюсь это проблема совсем не касается интерпретатора, и не программирование вовсе.
----- Truly yours, Sasha.
asked86
Отправлено: 25 Октября, 2008 - 20:44:10
Гость
Покинул форум
Сообщений всего: 82
Дата рег-ции: Окт. 2008
Помог: 0 раз(а)
[+][+]
Нет я тогда на Delphi сидел ! А там компилятор, ну какая разница принцип программирования та что на C++, что на PHP, что на Java, хоть Паскаль возьмите, или asm и т.д один и тот же!
Неделю ее искал потому что уже безразлично было, сосредоточиться не мог, а ошибка с динамическими структурами была с деревьями, памяти выделял много и контролировать было тяжело, ну что неделю искал да смешно конечно!
Ну когда на все по...й, тогда и месяц искать можно если срок не поджимает!
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.