Главная Контакты


  На сайте

  Java, JavaScript
  Документация Perl
  Документация PHP
  Документация ASP
  Новости сайта
  Flash
  Интернет протоколы
  Apache
  Уроки программирования
  Язык программирования C
 


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' ); ?> Как избежать неправильного приложения семантики?

Другие статьи по теме:

- 21 ошибка программиста php
- встроенные функции в php
- обзор сетевых функций php
- приемы безопасного программирования веб-приложений
- PHP - система разработки скриптов


Голосование:
Чего Вы хотели бы видеть больше на сайте?

Статей, документации
Скриптов
Программ для вебмастера
Я не знаю



Другие голосования

Обмен кнопочками:



Приглашаем Вас обменяться кнопочками! Обращайтесь к администратору.


Новые статьи:


Наши партнеры:





2006-2024 © SMTI.RU
Главная страница | Связаться с нами