-1

\folder\在 webroot 上方有一个文件夹,其中包含.php, .inc,.dat文件

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

  • 但是当.inc尝试访问.datusing时,它会给出一个在里面fopen('mydat.dat', "rb");找不到的错误mydat.dat \folder\myinc.inc

当然它找不到它,因为它.inc是文件而不是文件夹。为什么 php 如此对待它?

任何想法为什么 php 试图找到.dat内部.inc

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

4

4 回答 4

1

学习文件系统基础知识。您的工作目录仍在 webroot 中。它不会将其更改为 \folder\(尽管似乎新版本的 PHP 确实会在当前文件位置查找文件)。

无论如何,如果您想在同一目录中打开文件,dirname(__FILE__)总是适合您

在 myinc.inc 中,您可以使用

fopen(dirname(__FILE__).'/mydat.dat', "rb");
于 2010-04-06T16:14:15.887 回答
1

阅读您的评论后,我认为您希望 fopen 使用 include_path。

fopen() 默认不使用 include_path(与 include 不同)。这是一个选择。请参阅手册。 http://www.php.net/manual/en/function.fopen.php

于 2010-04-06T17:17:57.650 回答
0

听起来您已safe_mode启用,但没有值open_basedir,或将文件放在它之外。将 .dat 文件放在为该选项指定的路径中。

于 2010-04-06T15:47:50.747 回答
-1

每当我们在 php.ini 中处理文件时。必须给出路径+文件名以避免此类错误。

于 2011-05-07T13:08:44.217 回答