我正在研究这个简单的脚本,该脚本根据数据库值查找图像URL,然后回显显示图像,或者如果没有图像可用,则为默认图像。
然而,由于每次都返回默认图像,因此出现了问题。如果我用$ image行替换默认的回显线,则会显示。因此我知道它可以找到图像的URL。
<?php
$image = CONST_IMG_URL.$FetchData['capcode'].".jpg";
error_reporting(0);
if (getimagesize($image)) {
echo "<a href='$image'><img src=\"$image\" width='300' height='150'/></a>";
}
else {
echo "<img src='".plugins_url()."/plugins/images/image_not_found.jpg' width='300' height='150'/>";}
?>
答案 0 :(得分:1)
在您的示例中,getimagesize
没有做任何有效的事情。我建议使用file_exists
..
为了让file_exists
正常工作 - 您需要提供完整路径(而不是URI)。
所以你可以这样做:$_SERVER['DOCUMENT_ROOT'] . '/path/to/images/' . $image;
if(file_exists( '/full/path/to/image/dir/' . $image ))
{
echo "<a href='$image'><img src=\"$image\" width='300' height='150'/></a>";
} else {
echo "<img src='".plugins_url()."/plugins/images/image_not_found.jpg' width='300' height='150'/>";
}
解释
getimagesize
- 这会返回与图像相关的array
个属性,而不是在图像存在与否时显式返回,事实上,如果图像不存在则会发出警告而不是而不是像你期望的那样回归false
。
file_exists
- 这会检查文件,如果文件存在,则返回true
,如果文件不存在则返回false
- 这正是您在文件中寻找的内容方案
答案 1 :(得分:0)
您应该使用下一个代码:
try {
$img = @getimagesize($image);
echo "<a href='$image'><img src=\"$image\" width='300' height='150'/></a>";
} catch(Exception $e) {
echo "<img src='".plugins_url()."/plugins/images/image_not_found.jpg' width='300' height='150'/>";
}
答案 2 :(得分:0)
作为猜测,您的CONST_IMG_URL
是一条相对于网站而非文件系统的路径。
getimagesize()
方法使用相对或绝对路径名(即/var/www/images/uploaded/pic.jpg
或images/uploaded/pic.jpg
)在文件系统本身上查找图像。它还可以通过http://example.com/images/uploaded/pic.jpg
等网址查找图片。
如果CONST_IMG_URL
是一个路径,没有域部分,getimagesize()
将查看该图像的文件系统,并且它很可能不存在。例如,如果CONST_IMG_URL
为/images/uploaded/
,则该方法将在服务器上检查该绝对路径 - 这将不存在,因为它将前导/
视为“服务器的根” “,而不是”在您网站的文件夹中“。
要解决此问题,您可以采取两种方法(如果您想继续使用getimagesize()
)。
第一个是使CONST_IMG_URL
包含您的域名的绝对路径:
define('CONST_IMG_URL', 'http://domain.com/images/uploaded');
第二种方法是在调用getimagesize()时将完整的文档根添加到路径中:
if (getimagesize($_SERVER['DOCUMENT_ROOT'] . '/' . $image)) {
如果您打算使用上面的#2,我实际上建议您使用其他方法file_exists()
。此函数将简单地检查文件是否存在与加载文件相反,以从中提取参数信息(宽度,高度等),并使页面加载稍微更高效=]。
答案 3 :(得分:0)
您应该使用file_exists函数而不是getimagesize:
<?php
$image = CONST_IMG_URL.$FetchData['capcode'].".jpg";
error_reporting(0);
if (file_exists($image)) {
echo "<a href='$image'><img src=\"$image\" width='300' height='150'/></a>";
}
else {
echo "<img src='".plugins_url()."/plugins/images/image_not_found.jpg' width='300' height='150'/>";}
?>