Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将.dat文件读取为;rb";读取二进制文件_Php_Binary_Fopen - Fatal编程技术网

Php 将.dat文件读取为;rb";读取二进制文件

Php 将.dat文件读取为;rb";读取二进制文件,php,binary,fopen,Php,Binary,Fopen,我在webroot上有一个文件夹\folder\,其中包含.php,.inc,.dat文件 .php可以访问.inc没有问题 但是当.inc尝试使用fopen('mydat.dat',rb')访问.dat时它给出了一个在\folder\myinc.inc 当然,它找不到它,因为.inc是一个文件而不是文件夹。为什么php会这样对待它 知道php为什么要在.inc中查找.dat吗 或者任何其他替代fopen($filename,“rb”)?听起来好像您已经启用了,但是没有值,或者文件在它之外。

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

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

  • 但是当
    .inc
    尝试使用
    fopen('mydat.dat',rb')访问
    .dat
    它给出了一个在
    \folder\myinc.inc

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

知道php为什么要在
.inc
中查找
.dat

或者任何其他替代
fopen($filename,“rb”)

听起来好像您已经启用了,但是没有值,或者文件在它之外。将.dat文件放在指定给该选项的路径中。

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

无论如何,如果您想在同一目录中打开一个文件,
dirname(\uuuuu file\uuuu)
总是适合您的

在myinc.inc中,您可以使用

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

在阅读了您的评论之后,我认为您希望fopen使用include_路径

默认情况下,fopen()不使用include_路径(与include不同)。这是一种选择。请参阅手册。

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

从我链接到的文档中可以看出:“此指令不受安全模式的开启或关闭的影响。”请检查
open\u basedir
。那么你是说
open\u basedir
根本不存在?安全模式听起来像是安全模式。它在错误消息中有以下文字,
安全模式
。想想看,即使你们不理解错误信息的含义,其他人也会理解。所以,复制并粘贴您得到的准确错误消息总是一个非常好的主意。这样可以节省你和其他人的猜测时间。它没有说“在\folder\myinc.inc内找不到mydat.dat”。它只是说明了发生错误的文件名。不,我是正确的。这是PHP编写错误消息的方式。您可以尝试各种错误,但都有相同的模板。所有内容都是相同的:“in some\path”是发生错误的文件名。相信我。@donpal你为什么不试试我的代码而不是空的?那么.htaccess有什么问题?您的工作目录超出.htaccess访问权限