Php 将.dat文件读取为;rb";读取二进制文件
我在webroot上有一个文件夹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”)?听起来好像您已经启用了,但是没有值,或者文件在它之外。
\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访问权限