繁体   English   中英

PHP file_exists 不起作用

[英]PHP file_exists not working

我正在尝试使个人资料照片显示在我正在处理的网站上的评论列表中。 如果他们没有个人资料照片,我有一个标准图像来显示,不幸的是,即使它存在,图像也总是转到标准图像而不是个人资料。 代码如下:

$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 不起作用的任何想法?

您正在使用的函数file_exists使用物理路径,您需要提供的参数应该是该服务器上可以找到文件的地址,而不是 url

所以你应该有类似的东西

/home/var/www/images/

代替

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

因此,您需要检查该文件是否存在于本地服务器上,然后您可以使用 url 使其对公众可用(在 img src 中)

您可以在手册页上看到此功能仅适用于某些URL 包装器,因此最好使用路径而不是 url(我猜这取决于允许 url fopen 设置)

file_exists不适用于 HTTP,

使用 : $_SERVER["DOCUMENT_ROOT"]访问主机中的 root

所以

$reviewerPic = $_SERVER["DOCUMENT_ROOT"].'/images/members/' . $reviewPosterId .  '/profilePic.jpg';
$default_pic = $_SERVER["DOCUMENT_ROOT"].'/images/background.jpg';

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";

根据file_exists的 PHP 手册,并非所有协议都支持该功能:

此函数还可与某些URL 包装器一起使用。 请参阅支持的协议和包装器以确定哪些包装器支持 stat() 系列功能。

HTTP 包装支持 stat:

支持 stat() 否

file_exists PHP 函数仅适用于/var/www/file.extC:\\WWW\\File.ext等物理文件,不适用于 HTTP 文件。 它甚至不知道如何处理 HTTP 文件。

在这种情况下,如果您想知道该文件是否存在,因为它将是一个 HTTP 响应,您可以尝试使用curl ,如果它以404响应,则找不到该文件。

有关更多信息,请查看以下内容: http : //php.net/manual/en/function.file-exists.phphttp://php.net/manual/en/book.curl.php

file_exists不支持远程 URL。

你可以试试这个:

if (fopen($reviewerPic, "r"))
   echo "File exists!";

尝试简单的。

$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;" />';
}

处理它的好方法在这里~

<?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

?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM