0

imgファイルが存在するかどうかを確認したいのですが、それ以外の場合はデフォルトのimgを使用します。

しかし、画像ファイルが機能していないことを確認するために使用したいチェック。

私は次のコードを持っています。

$filename = "http://".$_SERVER['SERVER_NAME']."/media/img/".$row['CatNaam'].".jpg";
        echo"  <img src=\"".$filename."\" alt=\"".$row['CatNaam']."\">";

        echo "filename";

        if (file_exists($filename)) {
            echo "The file $filename exists";
        } else {
            echo "The file $filename does not exist";
        }

画像はありますが見えますが、画像が存在しないとのことです。echo filenameから応答をコピーすると、ファイルがそこにあります。

編集:

コードをに変更しました

$filename = "/media/img/".$row['CatNaam'].".jpg";
        echo $filename;
        echo"  <img src=\"".$filename."\" alt=\"".$row['CatNaam']."\">";


         echo "<br> $filename <br>";
        if (file_exists($filename)) {
            echo "The file $filename exists";
        } else {
            echo "The file $filename does not exist";
        }

私はまだ画像を見ることができますが、今は異なる警告が表示されます(これは以前よりも優れていると思います)

警告は言う:

警告:file_exists()[function.file-exists]:open_basedir制限が有効です。ファイル(/media/img/Badkraan.jpg)が許可されたパス内にありません:(検閲済み)mydomain / public_html / ve / paginas / producten/zoek.phpの71行目ファイル/media/ img/Badkraan。 jpgは存在しません

ファイルの許可は755です

4

9 に答える 9

2

ソース: http: //us1.php.net/file_exists

<?php
    $filename = '/path/to/foo.txt';

    if (file_exists($filename)) {
        echo "The file $filename exists";
    } else {
        echo "The file $filename does not exist";
    }
?>

また

ソース: http: //us1.php.net/manual/en/function.is-file.php

<?php
    var_dump(is_file('a_file.txt')) . "\n";
    var_dump(is_file('/usr/bin/')) . "\n";
?>
于 2013-11-28T15:03:13.287 に答える
1
<?php
$imgFile = "http://www.technew.in/uploads/image/samsung_galaxy_xpro_2_technew_in.jpg";
if (getimagesize($imgFile)) {
  echo "Valid image file";
} else {
  echo "Invalid image file or file not exist";
}
?>
于 2013-01-30T08:10:17.417 に答える
1

これをチェックして:

$file = 'Your_file';
$file_headers = @get_headers($file);

if($file_headers[0] == 'HTTP/1.1 404 Not Found') {
   // does not exist
} else {
   // exist     
}
于 2013-07-23T09:16:53.980 に答える
0

次のことを試してください

  • $filename適切に検証されていることを確認してください
  • allow_url_fopenPHP設定でアクティブ化された場合にのみ機能します
  • 画像フォルダに権限を付与していることを確認してください
于 2013-01-30T07:52:46.783 に答える
0

クライアントがファイルを見るときにファイルをチェックしています(http ...)。代わりに、サーバーのディスク上の実際のファイルを確認する必要があります。つまり、Linuxを使用している場合は、次のようになります。

if(file_exists($PATH_TO_FILES . '/' . $row['CatNaam'] . ".jpg")) ...

ここで、$ PATH_TO_FILESは、次のようなものから計算できdirname(__FILE__))ます。これにより、現在のスクリプトが置かれているディレクトリがわかります。

于 2013-01-30T07:52:57.347 に答える
0

この関数は、セーフモードの制限のためにアクセスできないファイルに対してFALSEを返します。 http://php.net/manual/en/function.file-exists.php

于 2013-01-30T07:56:36.650 に答える
0

file_existshttp-protocolを介して提供されるファイルでは正しく機能しない可能性があります。少なくとも私の場合はそうです(にallow_url_fopen設定されていてもOn)。ファイルは、ファイルシステムに直接アクセスできない別のサーバーからのものであると想定しています。それ以外の場合は、ファイル自体へのフルパスを使用する方が簡単です。

あなたはそれをこのように試すことができます。それはそれほど素晴らしいことではありませんが、少なくとも仕事を成し遂げるはずです。のphp.netページで他の例を見つけることができるはずですfile_exists

$filename = "http://".$_SERVER['SERVER_NAME']."/media/img/".$row['CatNaam'].".jpg";
echo"  <img src=\"".$filename."\" alt=\"".$row['CatNaam']."\">";
echo "filename";

$file_headers = @get_headers($filename);
if($file_headers[0] == 'HTTP/1.1 404 Not Found') {
    echo "The file $filename does not exist";
}
else {
    echo "The file $filename exists";
}
于 2013-01-30T07:58:11.447 に答える
0

私は同じ問題を抱えており、実際のアドレスを与えることでそれを解決します、それはかなりアリですが、それは私にとってはうまくいきます:

1-最初に現在の場所のアドレスを取得し、配列に配置します。

$pieces = explode("/", __FILE__);

2-必要なファイルに合うようにアドレスを変更します:

array_pop($pieces);

3-最後にそれをまとめます:

$final = implode("/", $pieces);

4-次にそれをファイル存在関数に入れます。

于 2013-05-09T16:01:24.490 に答える
0

$ filename = " http://im.rediff.com/money/2011/jan/19sld3.jpg ";

    $file_headers = @get_headers($filename);

    if($file_headers[0] == 'HTTP/1.1 404 Not Found') {
    //return false; 
    echo "file not found";
    }else {
    //return true;  
    echo "file found";

    }
于 2015-04-01T10:33:28.997 に答える