![]() |
|
21 ошибка программиста phpВозьмем кусок кода, который открывает файл и выводит его построчно: <?php $fp = @fopen ( 'somefile.txt', 'r' ) or die ( 'Не могу открыть файл somefile.txt' ); while ($line = @fgets ( "$fp", 1024)) // Здесь ошибка! { print $line; } @fclose ("$fp") // И здесь тоже color or die( 'Не могу закрыть файл somefile.txt' ); ?> В данном случае появится сообщение об ошибке типа: "Warning: Supplied argument is not a valid File-Handle resource in tst.php on line 4" ("Внимание: аргумент не может являться дескриптором файла") Это вызвано тем, что переменная $fp заключена в двойные кавычки, что однозначно определяет ее как строку, тогда как функция fopen() ожидает в качестве первого аргумента дескриптор, но не строку. Соответственно, вам следует использовать переменную, которая может содержать дескриптор. Примечание: В данном случае, строковый тип допустим синтаксически. Для решения проблемы следует просто убрать двойные кавычки: <?php $fp = @fopen ( 'somefile.txt', 'r' ) or die ( 'Не могу открыть файл somefile.txt' ); while ( $line = @fgets ($fp, 1024) ) { print $line; } @fclose ($fp) or die ( 'Не могу закрыть файл somefile.txt' ); ?> Как избежать неправильного приложения семантики? Другие статьи по теме: - гостевая - это просто!- встроенные функции в php - авторское право на программное обеспечение - приемы безопасного программирования веб-приложений - 21 ошибка программиста php |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
© SMTI.RU Главная страница | Связаться с нами |