PHP没有读取文件?

时间:2012-07-14 08:57:07

标签: php fread

我不知道我到底哪里错了。我把问题缩小到$ file没有设置任何东西,我不知道我哪里出错了。请帮忙:)

代码:($ _GET ['unit']是1)

                $filepathhalf = "http://sureclean.netai.net/data/";
                $date = date("Ymd");
                $unitnum = $_GET['unit'];
                $ext = ".txt";
                $filepath = $filepathhalf.$unitnum.$date.$ext;
                $bool = file_exists($filepath);
                if($bool = true)
                {
                    $fh = fopen($filepath, 'r');
                    $file = fread($fh, 4);
                    fclose($fh);
                }
                else{};
                $file = strval($file);
                echo $file;

yourwebsite /数据/ 120120714.txt:

true

2 个答案:

答案 0 :(得分:3)

file_exists

名为file_exists的功能仅适用于本地文件,您无法检查网络上的资源(通过 HTTP )是否可用此功能

这与您在下面的代码段中使用赋值而不是比较的事实一起提供了脚本的错误行为。

if($bool = true) 
  { ... }

的fopen

fopen并非总是允许从外部来源读取,但您确定这是必需的吗?如果您的文件确实是本地文件,请不要尝试以更简单的方式访问网页。


的fread

fread的第二个参数指定当前指定4的最大字节数。

目前您正在尝试从$fh中存储的文件句柄中读取 4 字节,并且您确实正在读取这四个字节。

$ file 将只包含空格,因为如果您在问题中正确缩进了yourwebsite/data/120120714.txt的内容,那么这就是存储在文件的前四个字节中的内容 - 是


我如何一次阅读整个文件?

PHP提供了一个名为file_get_contents的函数,该函数将读取整个文件并将其作为字符串返回,但如果您真的在寻找使用fread读取文件的方法,则应使用以下:

$file_data = fread ($fh, filesize ($filename));

答案 1 :(得分:1)

条件中的矿工错误:

if($bool == true)
{
     // do the stuff
}
else{
     // also show some message here if file does not exists.
}

您可以使用其他一些功能来读取文件。喜欢:file('filename.txt');或file_get_contents('filename.txt');