首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP getimagesize脚本问题

PHP getimagesize脚本问题
EN

Stack Overflow用户
提问于 2013-10-18 20:25:50
回答 4查看 777关注 0票数 0

我在这个简单的脚本上工作,它根据数据库值找到一个图像url,然后回显该url以显示图像,或者如果没有图像可用,则显示默认图像。

但是,它每次都会返回默认图像,这是有问题的。如果我用$image线路替换默认的回应线路,它会显示出来。因此,我知道它可以找到图像的URL。

代码语言:javascript
复制
<?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'/>";}
?>
EN

回答 4

Stack Overflow用户

发布于 2013-10-18 20:38:59

在您的示例中,getimagesize没有执行任何有效的操作。我建议使用file_exists..

为了让file_exists正常工作,你需要给出完整的路径(而不是URI)。

所以你可以这样做:$_SERVER['DOCUMENT_ROOT'] . '/path/to/images/' . $image;

如下所示:

代码语言:javascript
复制
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 -这正是您在场景中要查找的内容

票数 1
EN

Stack Overflow用户

发布于 2013-10-18 20:31:17

你应该使用下面的代码:

代码语言:javascript
复制
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'/>";
}
票数 0
EN

Stack Overflow用户

发布于 2013-10-18 20:37:13

作为猜测,您的CONST_IMG_URL是相对于网站的路径,而不是文件系统的路径。

getimagesize()方法使用相对或绝对路径名(即/var/www/images/uploaded/pic.jpgimages/uploaded/pic.jpg)在文件系统本身上查找图像。它还可以通过http://example.com/images/uploaded/pic.jpg等URL查找图像。

如果CONST_IMG_URL是一个没有域部分的路径,getimagesize()将在文件系统中查找该映像,很可能该映像不存在。例如,如果CONST_IMG_URL/images/uploaded/,则该方法将在服务器上检查该绝对路径-该绝对路径将不存在,因为它将前导/视为“服务器的根”,而不是“在您网站的文件夹内”。

要解决这个问题,您可以采取两种方法(如果您想继续使用getimagesize())。

  1. 第一个是使CONST_IMG_URL成为包含您的域的绝对路径:

define('CONST_IMG_URL','http://domain.com/images/uploaded');

  • The second将在调用getimagesize()时将完整的文档根追加到路径中:

if (getimagesize($_SERVER‘’DOCUMENT_ROOT‘.'/‘。$image)) {

如果你打算使用上面的第二种方法,我实际上建议你使用一种不同的方法,file_exists()。此函数将简单地检查文件是否存在,而不是加载文件以从中提取参数信息(宽度、高度等),并将使页面加载略有效率=]。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19449622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档