请告诉我,我的以下代码有什么问题:
<a href="<?php echo $_url; ?>" title="<?php echo $_name; ?>">
<?php
$logo2 = $_url.'/image/data/logo2.png';
$logo = $_url.'/image/data/logo.png';
if (file_exists($logo2)) {
echo "<img src=".$logo2." alt=\"Logo\" style=\"border: none;\" />";
} else {
echo "<img src=".$logo." alt=\"Logo\" style=\"border: none;\" />";
} ?>
</a>
$ logo2和$ logo的两个图像都存在于同一目录中,但代码只显示$ logo(logo.png) 我需要指点并提前感谢
更新:
$ _url的值是
$ this-&gt; data ['_ url'] = $这 - &GT; config-&GT;获得( 'config_url');
当我<?php echo $_url;?>
表示例如http://www.mysite.com
使用上面的代码 only show logo.png
答案 0 :(得分:2)
file_exists
可用于URL包装器。
在您的情况下,如果您确实需要执行URL包装器检查(将非常慢),请确保启用了URL包装器(默认启用)。
而且,您的$_url = http://www.mysite.com///image/data/logo2.png
,请注意额外的斜杠可能会影响Web服务器重写。
如果文件与Web服务器位于同一服务器上,则应将$_url
替换为document_root(文件夹的路径)。
对于功能方面,file_exists
也为目录返回true。您应将其替换为is_file
答案 1 :(得分:1)
您正在将file_exists()
应用于无效的网址。
您需要将其应用于文件系统路径。
答案 2 :(得分:0)
file_exists
需要本地路径,而不是 url 。
答案 3 :(得分:0)
与此处的一些答案相反,file_exists可以将URL作为参数,它将检查它是否存在。但是,您最好还是使用file_exists的文件系统路径而不是URL。
无论如何,有两个原因立即浮现在脑海中:
这两个文件是否具有相同的权限? (即,logo.png可能具有必要的读取权限,而logo2.png可能没有这些权限)
文件名是否与脚本中的文件名完全相同?例如,一切都可能在您的开发平台上正常工作 - Mac或Windows忽略了文件名的字母大小写,但在文件名必须相同的Linux服务器上却没有。
答案 4 :(得分:-2)
使用getimagesize(),因为file_exists将返回false。
<a href="<?php echo $_url; ?>" title="<?php echo $_name; ?>">
<?php
$logo2 = $_url.'/image/data/logo2.png';
$logo = $_url.'/image/data/logo.png';
if (getimagesize($logo2)) {
echo "<img src=".$logo2." alt=\"Logo\" style=\"border: none;\" />";
} else {
echo "<img src=".$logo." alt=\"Logo\" style=\"border: none;\" />";
} ?>
</a>