2013-11-30 4 views
-1

Я не могу сказать вам, насколько глупо мне нужно задавать этот вопрос, но я работал над самыми простыми командами (в течение двух дней) и не могу найти проблема. Я «заимствовал» некоторый код для не повторяющегося счетчика. Я попытался заставить его работать, и я, наконец, решил, что не получаю доступ к простым файлам txt, в которых хранятся образы, или тот, который хранит IP-адреса. Я читал здесь проблемы, смотрел на команду в «чайниках» и даже смотрел видео на YouTube, и я слеп к этой проблеме. Я попытался использовать строку для имени файла и напрямую использовать имя файла. У меня были файлы в подпапке на сервере, и я подумал, что это может быть проблемой, поэтому я переместил их в корневой каталог с той же ошибкой. Если кто-то может понять, почему это не работает, я буду бесконечно благодарен.Не могу получить fopen, чтобы открыть файл

Это только часть всего кода, но я обнаружил, что он не работает.

 $filename = 'countfix.txt';  
      $handle = fopen('$filename', 'r'); 
      fread($handle, $current_inc) 
       or die ("Can't open file"); 
       echo $current_inc; 
      fclose($handle); 

Спасибо.

+0

PHP разрешает пути относительно корня сервера, а не корень веб-сайта. Я обычно создаю полный путь к файлу, используя '$ _SERVER ["DOCUMENT_ROOT"]' как ведущую часть пути к веб-сайту. Поэтому, если ваш файл находится в корне вашего сайта (/countfix.txt), вы должны использовать $ _SERVER ["DOCUMENT_ROOT"]/countfix.txt –

+0

Извините @Андрю я оговорился. На сайте, на котором я работаю, есть отдельная папка. Я сделал подпапку под этим и думал, что это сработает, потому что все мои файлы для этого счетчика были там. Затем я прочитал что-то о вводе пути, поэтому я переместил файлы в основную папку, но, как мы видим, это не проблема. –

ответ

5

Это неправильно:

$handle = fopen('$filename', 'r'); // tries to open a file named $filename 

Он должен быть написан так:

$handle = fopen($filename, 'r'); // no quotes, opens countfix.txt 

Вы могли бы иметь в виду, чтобы написать вместо этого:

$handle = fopen("$filename", 'r'); 

, где двойные кавычки привести к замене реального значения $filename в строку (тем самым делая работу кода), но th Это не имеет смысла делать это. Потеряйте кавычки.

Кроме того, этот код не делать то, что он говорит:

fread($handle, $current_inc) or die ("Can't open file"); 

Здесь печатается сообщение об ошибке, если вы не можете прочитать из файла, а не когда вы не открыть его. Вы должны проверить возвращаемое значение fopen или изменить сообщение, чтобы быть более точным.

+0

Джон, ваш ответ получил прекрасный смысл. Однако, когда я взял одиночные кавычки, это все равно не сработает. Я играл с несколькими вещами и до сих пор не могу заставить его прочитать файл. Я изменил отчет об ошибках и теперь, по-видимому, он открывает файл, но по какой-то причине он не может его прочитать. Я ненавижу быть вредителем для чего-то, что должно быть так просто! \t \t \t $ filename = 'countfix.текст'; \t \t \t \t \t \t $ обрабатывать = FOPEN ($ файла, 'г') \t \t \t \t \t или умереть ("Невозможно открыть файл"); \t \t \t \t \t Fread ($ ручка ($ current_inc)) \t \t \t \t \t или умереть ("Невозможно прочитать файл"); \t \t \t \t \t echo $ answer; \t \t \t \t fclose ($ handle); –

+0

@JimRaymond: Поверните настройки 'display_errors' и' error_reporting', чтобы получить обратную связь в форме предупреждающих сообщений. Это решение невозможно догадаться. – Jon

+0

Рабочий сервер, над которым я работал, не позволял мне обращаться к файлам php.ini. Поэтому я переместил файлы на веб-сервер, который я арендую. Большая часть отчетов об ошибках была включена, и те, которые я мог найти отключенными, я включил. Но он все равно не сообщал о каких-либо ошибках. Теперь я начинаю с нуля и играю с командами «f» (fopen, fread и т. Д.) И надеясь, что, когда я полностью пойму это, я смогу найти проблему. Благодарю. –

1

Это правильный способ сделать это:

$handle = fopen("$filename", 'r'); 

необходимо заключать переменные Doubble кавычки, или не заключать их на всех! Так выглядит PHP.

Вы можете прочитать: what is the difference between single quoted and double quoted strings in php

+0

плохой совет, @jon получил это лучше. Потеряйте кавычки, прекратите переносить переменные в кавычки ... особенно в этом случае – hanzo2001

+1

Этот ответ верен. Это, по крайней мере, не заслуживает довн-голосования, даже если это не самый лучший. –

+0

Спасибо, Хэнки. Я думаю, вы правы, если ответ Джона является лучшим, тот, кто задал вопрос, примет его как лучший ответ. – 131

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