我在这个简单的脚本上工作,它根据数据库值找到一个图像url,然后回显该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'/>";}
?>发布于 2013-10-18 20:38:59
在您的示例中,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'/>";
}说明
-返回与图像相关的属性的array,而不是显式地返回图像是否存在。事实上,如果图像不存在,它将抛出警告,而不是像您预期的那样返回false。
-这将检查文件,如果文件存在,则返回true;如果文件不存在,则返回false -这正是您在场景中要查找的内容
发布于 2013-10-18 20:31:17
你应该使用下面的代码:
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'/>";
}发布于 2013-10-18 20:37:13
作为猜测,您的CONST_IMG_URL是相对于网站的路径,而不是文件系统的路径。
getimagesize()方法使用相对或绝对路径名(即/var/www/images/uploaded/pic.jpg或images/uploaded/pic.jpg)在文件系统本身上查找图像。它还可以通过http://example.com/images/uploaded/pic.jpg等URL查找图像。
如果CONST_IMG_URL是一个没有域部分的路径,getimagesize()将在文件系统中查找该映像,很可能该映像不存在。例如,如果CONST_IMG_URL为/images/uploaded/,则该方法将在服务器上检查该绝对路径-该绝对路径将不存在,因为它将前导/视为“服务器的根”,而不是“在您网站的文件夹内”。
要解决这个问题,您可以采取两种方法(如果您想继续使用getimagesize())。
CONST_IMG_URL成为包含您的域的绝对路径:define('CONST_IMG_URL','http://domain.com/images/uploaded');
if (getimagesize($_SERVER‘’DOCUMENT_ROOT‘.'/‘。$image)) {
如果你打算使用上面的第二种方法,我实际上建议你使用一种不同的方法,file_exists()。此函数将简单地检查文件是否存在,而不是加载文件以从中提取参数信息(宽度、高度等),并将使页面加载略有效率=]。
https://stackoverflow.com/questions/19449622
复制相似问题