2010-04-06 61 views
-1

我有一个文件夹\folder\包含.php.inc.dat文件读取.dat文件为 “RB” 读取二进制

  • .php可以访问.inc没有问题

  • 的根目录上面但是当.inc尝试将.dat使用fopen('mydat.dat', "rb");它给出了一个错误,它无法找到访问mydat.dat\folder\myinc.inc

当然它不能找到它,因为.inc是一个文件不是一个文件夹。为什么php会这样对待它?

任何为什么PHP是试图找到.inc.dat想法?

或任何其他替代fopen($filename, "rb")

+0

即使您不明白错误信息的含义,其他人也会这样做。所以,复制和粘贴确切的错误信息总是非常好的主意。这会节省你的时间和其他人的猜测。它不会说“它无法在\ folder \ myinc.inc中找到mydat.dat”。它只是说错误发生的文件名。 – 2010-04-06 16:21:12

+1

不,我是对的。这是PHP写入错误消息的方式。你尝试各种错误,但都有相同的模板。一切都以同样的方式:“在某些路径中”是发生错误的文件的名称。相信我。 – 2010-04-06 17:33:29

回答

0

听起来像你有safe_mode启用,但没有open_basedir的值,或者在文件外面有文件。将.dat文件放在指定给该选项的路径中。

+1

从我链接到的文档中:“该指令不受***安全模式打开或关闭的影响。”请检查'open_basedir'。 – 2010-04-06 15:59:03

+0

那么你是说'open_basedir'根本不存在? – 2010-04-06 16:11:43

+0

安全模式听起来像安全模式。它在错误消息中包含这些词,“安全模式”。去搞清楚。 – 2010-04-06 16:15:44

1

了解文件系统的基础知识。 你的工作目录仍然在webroot中。它不会将其更改为\ folder \(尽管看起来新版本的PHP在当前文件位置内查找文件)。

无论如何,如果你想打开在同一目录中的文件,dirname(__FILE__)总是在myinc.inc你

可以使用

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

@donpal为什么你不试试我的代码而不是空洞的争论?那么.htaccess有什么问题?你的工作目录超出.htaccess范围 – 2010-04-06 17:35:25

-1

当过我们应对PHP文件。有必要给路径+文件名以避免这种类型的错误。