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経由で) Web 上のリソースが利用可能かどうかを確認することはできません。

これは、以下のスニペットで比較の代わりに代入を使用しているという事実と相まって、スクリプトの間違った動作を提供します。

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

開く

fopen外部ソースからの読み取りが常に許可されているわけではありませんが、これが必要であると確信していますか? ファイルが実際にローカルにある場合は、より簡単な方法でアクセスできる場合でも、ネット経由で読み取らないでください。


恐れる

の 2 番目の引数freadは、現在指定している最大バイト数を指定します4

現在、 に格納されているファイルハンドルから4バイトを読み取ろうとしてい$fhますが、実際にこれらの 4 バイトを読み取っています。

$fileには、質問の内容を正しくインデントしている場合、ファイルの最初の 4 バイトに格納されているため、スペースのみが含まれます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 に答える