2015-01-05 3 views
4

Это мой первый вопрос, поэтому извините меня, если я сделаю что-то неправильно! Я стараюсь изо всех сил!Ошибка, которая не должна быть там

Так я получил этот простой код

<?php 
$fn = "file.txt"; 
$file = fopen($fn, "w+"); 
$size = filesize($fn); 

if($_POST['addition']) fwrite($file, $_POST['addition']); 

$text = fread($file, $size); 
fclose($file); 
?> 
<form action="<?=$PHP_SELF?>" method="post"> 
<input type="text" name="addition" value="<?php echo file_get_contents('file.txt');?>"/> 
<input type="submit"/> 
</form> 

<iframe width="420" height="315" src="//<?php echo file_get_contents('file.txt');?>" frameborder="0" allowfullscreen></iframe> 

Он прекрасно работает, только одна небольшая проблема ...

Проблема

Скрипт работает нормально, но проблема в том, что он выдает ошибку :

Warning: fread() expects exactly 2 parameters, 1 given in /home/u799303375/public_html/beta/private/Test/test.php on line 8

Я понятия не имею, как исправить эту

Что я уже пытался

  1. Я попытался удалить $ размер, не работает, он ожидает, что 2 строки только получает 1.
  2. Ничего нет ...

Помоги мне , если вам нужен рабочий пример, просто попросите не включать его прямо сейчас!

+1

не может видеть, как этот код выдаст эту ошибку. возможно, у вас есть кэшированная версия файла, поражаемого сервером, или не обновили версию сервера? –

+2

Вы эхо '$ fn' и' $ size', чтобы убедиться, что они заполнены? –

+1

Попробуйте 'var_dump ($ size);', что вы получаете? Определяется ли '$ size'? –

ответ

0

Fread() ожидает ресурс и Int

string fread (resource $handle , int $length) 

Вы проверили свой параметр размера $? Это может быть ЛОЖЬ. Это может привести к ошибке.

+0

Спасибо за ваше сообщение, но он исправлен просто пришлось удалить строку! –

1

По документации PHP, fopen ($ fn, "w +") устанавливает указатель файла в начало файла и обрезает файл до нулевой длины. Мое предположение заключается в том, что fread не принимает размер файла 0 (ноль) в качестве допустимого значения параметра.

Из вашего фрагмента кода выглядит так, будто вы пытаетесь добавить к этому файлу. Возможно, вы захотите попробовать другой режим fopen, такой как «a +». Это откроет файл для чтения и записи, установите указатель в конце файла. Если файл не существует, он попытается его создать.

Если вы хотите прочитать все содержимое файла (что похоже на то, что вы пытаетесь сделать); документация fread рекомендует использовать команду file_get_contents(). После того, как вы напишете файл и закройте его, попробуйте выполнить следующую команду:

$ text = file_get_contents ($ fn);

Из вашего фрагмента кода, хотя это не похоже, что это действительно необходимо.

+0

Или просто не читайте из файла, в котором вы уже знаете содержимое. Вместо этого сохраните буфер, который вы собираетесь записать в файл, а затем сохраните файл с этим содержимым и установите '$ text' в тот же буфер. – h2ooooooo

Смежные вопросы