我有这个代码,如果生成一个代码就会显示图像,否则就会显示“无图像”。
<body>
<?php
$src = "somescript.php";
// if (getimagesize($src)) {
if (file_exists($src)) {
echo '<img src="'.$src.'" />';
} else {
echo "no image";
}
?>
</body>
somescript.php
是生成图片的本地文件,或die();
问题是:
file_exists
条件总是不会返回任何内容
getimagesize
条件始终返回“无法打开流”。
任何人都知道如何让它发挥作用?
答案 0 :(得分:1)
除非您将完整的URL传递给filexists()
,否则它将在本地文件系统路径上工作,这可能与您传入的图像的网址没有任何关系。 <img>
标记。 e.g。
然后是以下网址 - &gt;路径查找将会发生:
传递file_exists('/images/foo.jpg')
:PHP将检查本地系统路径/images/foo.jpg
。您没有从服务器的根目录服务您的站点,因此失败。
你试试file_exists('images/foo.jpg')
:PHP将检查/home/site/example.com/html/foo/images/foo.jpg
- 你的脚本运行的目录的子目录。也不存在,你就是假的。
您通常不能像往常那样混合文件系统空间和URL空间路径。这两个空格是相关的,但没有直接连接。
答案 1 :(得分:1)
尝试使用此而不是file_exists
$src = 'somescript.php';
$src_headers = @get_headers($src);
if($file_headers[0] == 'HTTP/1.1 404 Not Found') {
$exists = false;
}
else {
$exists = true;
}
答案 2 :(得分:0)
由于仅为每个请求生成一次图像似乎是合适的,我会在客户端处理此问题。
您可以在文档加载时使用jQuery获取图像,并决定是显示图像还是显示“无图像”。
或者您可以保留img
标记,但使用javascript检测图片中的错误:
<强> CSS 强>
#mynoimg { display: none; }
<强> HTML 强>
<img id="myimg" src="somescript.php" />
<div id="mynoimg">no image</div>
<强>的Javascript 强>
document.getElementById("myimg").onerror = function() {
this.style.display = "none";
document.getElementById("mynoimg").style.display = "block";
}
或使用jQuery:
$("#myimg").error(function () { // when image doesn't load correctly
$(this).hide(); // hide it
$("#mynoimg").show(); // and show "no image" message instead
});