Чтение файла .dat как чтение файла "rb" - PullRequest
0 голосов
/ 06 апреля 2010

У меня есть папка \folder\ над webroot, которая содержит .php, .inc, .dat файлы

  • .php может получить доступ к .inc без проблем

  • но когда .inc пытается получить доступ к .dat с помощью fopen('mydat.dat', "rb");, выдает ошибку, которую не может найти mydat.dat внутри \folder\myinc.inc

Конечно, он не может найти его, так как .inc - это файл, а не папка. Почему php рассматривает его как таковой?

Есть идеи, почему php пытается найти .dat внутри .inc?

или любые другие альтернативы fopen($filename, "rb")?

Ответы [ 4 ]

1 голос
/ 06 апреля 2010

Изучите основы файловой системы. ваш рабочий каталог все еще находится в webroot. он не меняет его на \ folder \ (хотя кажется, что новые версии PHP смотрят файлы в текущей папке).

В любом случае, если вы хотите открыть файл в том же каталоге, dirname(__FILE__) всегда для вас

в myinc.inc вы можете использовать

fopen(dirname(__FILE__).'/mydat.dat', "rb");
1 голос
/ 06 апреля 2010

Прочитав ваши комментарии, я думаю, вы ожидаете, что fopen будет использовать include_path.

fopen () по умолчанию не использует include_path (в отличие от include).Это вариант.Смотрите руководство.http://www.php.net/manual/en/function.fopen.php

0 голосов
/ 07 мая 2011

Когда мы имеем дело с файлами в php.Чтобы избежать ошибок такого типа, необходимо указать путь + имя файла.

0 голосов
/ 06 апреля 2010

Звучит так, как будто вы включили safe_mode, но у вас нет значения для open_basedir, или файл находится вне его. Поместите файл .dat в путь, указанный для этой опции.

...