7

自分が取り組んでいるサイトのレビューのリストに対してプロフィール写真を表示させようとしています。プロフィール写真がない場合は、代わりに標準の画像を表示しますが、残念ながら、画像が存在する場合でも、プロフィールではなく常に標準の画像になります。コードは次のとおりです。

$reviewerPic = 'http://www.[URL].co.uk/images/members/' . $reviewPosterId . '/profilePic.jpg';
$default_pic = 'http://www.[URL].co.uk/images/background.jpg';
    if(file_exists($reviewerPic)){
        $reviewer_pic = '<img src="' . $reviewerPic . '" width="100px" style="float: left; margin: 20px;" />';
    }else {
        $reviewer_pic = '<img src="' . $default_pic . '" width="100px" style="float: left; margin: 20px;" />';
}

かなり一般的なコードですが、機能していないようです。背景画像が表示され続けるだけです...

file_existsが機能しない理由について何かアイデアはありますか?

4

8 に答える 8

20

使用している関数file_existsは物理パスを使用します。指定する必要のあるパラメーターは、URLではなく、ファイルが存在するサーバー上のアドレスである必要があります。

そうあなたは次のようなものを持っている必要があります

/home/var/www/images/

それ以外の

http://www.[URL].co.uk/images/

したがって、ファイルがサーバー上にローカルに存在するかどうかを確認する必要があります。その後、URLを使用して一般に公開することができます(img src内)

マニュアルページで、この関数は一部のURLラッパーでのみ機能することがわかります。したがって、URLではなくパスを使用することをお勧めします(URL fopenの許可設定に依存すると思います)

于 2012-06-06T11:35:07.330 に答える
5

file_existsHTTPでは機能しません。

$_SERVER["DOCUMENT_ROOT"]を使用して、ホストのルートにアクセスします

それで

$reviewerPic = $_SERVER["DOCUMENT_ROOT"].'/images/members/' . $reviewPosterId .  '/profilePic.jpg';
$default_pic = $_SERVER["DOCUMENT_ROOT"].'/images/background.jpg';
于 2012-06-06T11:36:37.387 に答える
1

File_existsは、/ home / www / username /public_html/形式を使用します。これをホストから取得することをお勧めします。

したがって、は次のようになります/home/www/jack/public_html/[URL].co.uk/profilepic/id/profilePic.jpg

ちなみに、で使用する必要はありませ.echo '<img src=...。文字列内で変数を使用できます.。関数などを使用して変数を変更する必要がある場合にのみ使用してください。"string0".function($str....)."string1";

于 2012-06-06T11:34:47.423 に答える
1

file_existsのPHPマニュアルによると、すべてのプロトコルが次の機能をサポートしているわけではありません。

この関数は、一部のURLラッパーでも使用できます。サポートされているプロトコルとラッパーを参照して 、どのラッパーがstat()ファミリーの機能をサポートしているかを確認してください。

HTTPラッパーはstatをサポートしていません:

stat()をサポートしますいいえ

于 2012-06-06T11:36:38.543 に答える
0

file_existsPHP関数は、HTTPファイルのような物理ファイルでのみ機能し/var/www/file.ext、 HTTPファイルでは機能C:\WWW\File.extしません。HTTPファイルの処理方法すら知りません。

この場合、ファイルが存在するかどうかを知りたい場合は、HTTP応答になるため、を使用してみることができますcurl。これで応答すると404、ファイルが見つかりません。

詳細については、http://php.net/manual/en/function.file-exists.phpおよびhttp://php.net/manual/en/book.curl.phpを確認しください

于 2012-06-06T11:35:44.437 に答える
0

file_existsリモートURLをサポートしていません。

あなたはこれを試すことができます:

if (fopen($reviewerPic, "r"))
   echo "File exists!";
于 2012-06-06T11:36:53.467 に答える
0

簡単なものを試してください。

$reviewerPic = 'http://www.[URL].co.uk/images/members/' . $reviewPosterId . '/profilePic.jpg';
$default_pic = 'http://www.[URL].co.uk/images/background.jpg';
    if($fileopen = @fopen($reviewerPic)){
        $reviewer_pic = '<img src="' . $reviewerPic . '" width="100px" style="float: left; margin: 20px;" />';
       fclose($fileopen);
    }else {
        $reviewer_pic = '<img src="' . $default_pic . '" width="100px" style="float: left; margin: 20px;" />';
}
于 2016-06-25T12:39:33.600 に答える
0

それを処理するための素晴らしい方法はここにあります〜

<?php

$imgok="1.webp"; // Your actual image
$imgerr="template.webp"; // If image is missing
$dir="/assets/image/products/"; // Location of the image directory

$path = $_SERVER['DOCUMENT_ROOT'].$dir. $imgok; // Full Paths for processing

echo file_exists($path) ? $dir.$imgok : $dir.$imgerr; // Actual paths for domain to get the image

?>
于 2021-03-20T16:54:44.970 に答える