0

我不知道我到底哪里错了。我已将问题缩小到 $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;

你的网站/数据/120120714.txt:

true
4

2 回答 2

3

文件已存在

调用的函数file_exists仅适用于本地文件,您无法通过此函数检查网络上的资源(通过HTTP)是否可用。

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

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

开放

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


恐惧

第二个参数fread指定要读取的最大字节数,您当前指定的位置4

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

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


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

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

$file_data = fread ($fh, filesize ($filename));
于 2012-07-14T08:59:52.703 回答
1

if 条件下的矿工错误:

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');

于 2012-07-14T09:03:56.083 回答