2010-04-06 4 views
-1

У меня есть папка \folder\ над вебсервер, который содержит .php, .inc, .dat файловЧтения .dat файл как "гб" чтение двоичного

  • .php не могут получить доступ к .inc никакой проблемы,

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

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

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

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

+0

Даже если вы не понимаете смысла сообщения об ошибке, другие люди это делают. Итак, всегда очень хорошая идея скопировать и вставить точное сообщение об ошибке, которое у вас есть. Это сэкономит ваше время и других людей от угадывания. Он не говорит, что «он не может найти mydat.dat внутри \ folder \ myinc.inc». Он просто указал имя файла, где произошла ошибка. –

+1

Нет, я прав. Это то, как PHP пишет сообщения об ошибках. Вы можете попробовать различные ошибки, но все они имеют один и тот же шаблон. Все одинаково: «in some \ path» - это имя файла, в котором произошла ошибка. Доверьтесь мне. –

ответ

1

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

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

0

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

+1

Из документации, с которой я связан: «Эта директива *** НЕ влияет на включение или выключение безопасного режима». Также проверьте 'open_basedir'. –

+0

Так вы говорите, что 'open_basedir' вообще нет? –

+0

безопасный режим звучит как безопасный режим. В сообщении об ошибке оно содержит «безопасный режим». Идите фигуру. –

1

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

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

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

fopen(dirname(__FILE__).'/mydat.dat', "rb"); 
+0

@donpal, почему бы вам не попробовать мой код вместо пустой аргументации? И в чем проблема с .htaccess? ваш рабочий каталог не доступен .htaccess –

-1

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

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