[英]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.ext
或C:\\WWW\\File.ext
等物理文件,不適用於 HTTP 文件。 它甚至不知道如何處理 HTTP 文件。
在這種情況下,如果您想知道該文件是否存在,因為它將是一個 HTTP 響應,您可以嘗試使用curl
,如果它以404
響應,則找不到該文件。
有關更多信息,請查看以下內容: http : //php.net/manual/en/function.file-exists.php和http://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.