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

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Дмитрий.К
Отправлено: 22 Октября, 2008 - 14:43:11
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Окт. 2008  


Помог: 0 раз(а)




Что-то не так в этом коде? Во всех источниках он описан как работоспособный. Более того, он поначалу даже читал содержимое файла. Но перестал.. Что могло произойти?

$filename = 'main.hd'; // файл лежит рядом с .php файлом

if (filesize($filename)) {
$hfile = fopen ($filename,"r");

while (!feof($hfile)) {
$str = fgets($hfile);
$paramvalue .= $str;
}
fclose($hfile);

пишет в браузере вот так:

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 и т.д.
 
 Top
Champion Супермодератор
Отправлено: 22 Октября, 2008 - 15:14:05
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Странно. А fopen ошибок, как я понял, не выдает? Попробуйте вывести значение переменной $hfile сразу после fopen. Вы привели весь участок кода? Может быть после fopen вы производите какие6-нибудь присвоения $hfile или удаляете файл?..
 
 Top
valenok Модератор
Отправлено: 22 Октября, 2008 - 16:41:14
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Стандартная ошибка у этой функции
Warning: fgets(): supplied argument is not a valid stream resource
А что это за тройка и откуда она берется..

Оформите пожалуйста код так чтоб он был читабелен и было ясно где какая строка.


-----
Truly yours, Sasha.
 
My status
 Top
Champion Супермодератор
Отправлено: 22 Октября, 2008 - 16:50:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




valenok пишет:
Warning: fgets(): supplied argument is not a valid stream resource
А что это за тройка и откуда она берется..

Вот это-то и интересно - вроде как fopen ошибок не дала, значит в $hfile хранится правильный дескриптор. А ворнинг говорит обратное. 3 - как раз и есть этот дескриптор. Странная штука
 
 Top
Дмитрий.К
Отправлено: 23 Октября, 2008 - 08:52:45
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Окт. 2008  


Помог: 0 раз(а)




Спасибо..наверное это был сбой в работе сервера..хотя перезагрузка компьютера не помогала.. может это было связано с тем, что засунута в пользовательскую функцию..вообщем я переписал код с использованеим функции file..все нормализовалось..
 
 Top
Champion Супермодератор
Отправлено: 23 Октября, 2008 - 08:57:50
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Дмитрий.К пишет:
наверное это был сбой в работе сервера..хотя перезагрузка компьютера не помогала
Это точно не сбой в работе сервера)
Дмитрий.К пишет:
может это было связано с тем, что засунута в пользовательскую функцию
О чем речь? ЧТО туда была засунута?
 
 Top
asked86
Отправлено: 25 Октября, 2008 - 17:50:15
Post Id


Гость


Покинул форум
Сообщений всего: 82
Дата рег-ции: Окт. 2008  


Помог: 0 раз(а)

[+][+]


На будующее такие ошибки решаются следующим образом!
1) Если текста не много, то вырезаем по одной строчке, и каждый раз ее компилим и смотрим на ее поведение !
2) Если что то не получпется вставляем эту строку на место, и вырезаем другую и опять смотрим на поведение !
3) Попробуйте заменить переменные другими именами, как не странно, но я с такими ошибками сталкивался ! да да это правда !
Радость Радость Радость
 
 Top
Champion Супермодератор
Отправлено: 25 Октября, 2008 - 18:01:03
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




asked86 пишет:
то вырезаем по одной строчке,

Если уж на то пошло, то так будет гораздо быстрее:
1-Вырезаем половину кода.
2-Если ошибка осталась, работаем по этому же алгоритму с другой половиной кода.
3-Если ошибка убралась, возвращаем вырезанное на место и вырезаем половину того, что только что вернули
4-возвращаемся в п.2 до тех пор, пока не найдем ошибку Радость Радость Радость
 
 Top
asked86
Отправлено: 25 Октября, 2008 - 19:42:22
Post Id


Гость


Покинул форум
Сообщений всего: 82
Дата рег-ции: Окт. 2008  


Помог: 0 раз(а)

[+][+]


Вот вы над этим смеетесь, а в какой то из книг знаменитого профессионала в области программирования, это один из методов поиска ошибок и выявления причин!
Иногда одна ошибка порождает все другие, и для ее выяснения так и следует их искать !
 
 Top
Champion Супермодератор
Отправлено: 25 Октября, 2008 - 19:47:36
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Кстати, можно не вырезать, а пользоваться комментированием))
 
 Top
asked86
Отправлено: 25 Октября, 2008 - 19:48:47
Post Id


Гость


Покинул форум
Сообщений всего: 82
Дата рег-ции: Окт. 2008  


Помог: 0 раз(а)

[+][+]


Я тоже не признавал этот метод, но когда кодил серьезный проект то потом осознал.
Было такое что искал ошибку неделю, хотя и по процедурам небольшим все разбито было, ошибку которую выдавал компилятор, она была из-за ошибки на 10 строк выше о которой, сам компилятор молчал ! И такое бывает, так что не надо быть скептиком !
Подмигивание
(Добавление)
На счет комментариев да, полностью с вами согласен !!!
Вы правы но сильно не стоит комментировать ! Очевидные строки комментировать не стоит ,
ну типа запись в файл, чтение , цикл , деление и т.п, а то начинающие начитаются про комментарии, и начинают все комментировать, а во время отладки собственные комменты бесят !
Нахмурился
(Добавление)
Ну в конце концов есть другие опрераторы:
Альтернатива,
PHP:
скопировать код в буфер обмена
  1. $handle=fopen("file.txt","r");
  2.  
  3.   $text=fread($handle,filesize("file.txt"));
  4.   $text=str_replace("\n","<br>",$text);
  5.   print($text);
  6.  fclose($handle);

Ха-ха
 
 Top
Champion Супермодератор
Отправлено: 25 Октября, 2008 - 20:11:22
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




asked86 пишет:
ошибку которую выдавал компилятор, она была из-за ошибки на 10 строк выше о которой, сам компилятор молчал

Это наверное незакрытая чткобка или что-то в этом роде... Структурное программирование помогает быстро найти такую ошибку, если вдруг она получилась... В общем тут много мнений, много способов Улыбка Ошибки разные бывают
 
 Top
asked86
Отправлено: 25 Октября, 2008 - 20:24:16
Post Id


Гость


Покинул форум
Сообщений всего: 82
Дата рег-ции: Окт. 2008  


Помог: 0 раз(а)

[+][+]


Нет эта ошибка была следствием ошибки на 10 строк выше (о ней молчал компилятор), это была не не закрытая скобка!
Если вы этому методу не доверяете, я вас не заставлю, вернее даже убедить не смогу !

Даже если вы будете строить программы в виде объектов что вам мешает их также быстро находить(ошибки), ООП это штука, но когда чтото пишешь только один, не стоит о нем даже думать !
 
 Top
valenok Модератор
Отправлено: 25 Октября, 2008 - 20:33:01
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Это значит что 10ю строками выше как раз ошибки не было, и никакой не компилятор, а интерпретатор, делал именно то что ему приказано было делать. Если вы неделю не могли справиться с отладкой, то боюсь это проблема совсем не касается интерпретатора, и не программирование вовсе.


-----
Truly yours, Sasha.
 
My status
 Top
asked86
Отправлено: 25 Октября, 2008 - 20:44:10
Post Id


Гость


Покинул форум
Сообщений всего: 82
Дата рег-ции: Окт. 2008  


Помог: 0 раз(а)

[+][+]


Нет я тогда на Delphi сидел ! А там компилятор, ну какая разница принцип программирования та что на C++, что на PHP, что на Java, хоть Паскаль возьмите, или asm и т.д один и тот же!
Неделю ее искал потому что уже безразлично было, сосредоточиться не мог, а ошибка с динамическими структурами была с деревьями, памяти выделял много и контролировать было тяжело, ну что неделю искал да смешно конечно!
Ну когда на все по...й, тогда и месяц искать можно если срок не поджимает!
Ха-ха
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB