检查文件存在与PHP无法正常工作,需要帮​​助

时间:2010-12-17 16:58:07

标签: php file exists

请告诉我,我的以下代码有什么问题:

<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

5 个答案:

答案 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。

无论如何,有两个原因立即浮现在脑海中:

  1. 这两个文件是否具有相同的权限? (即,logo.png可能具有必要的读取权限,而logo2.png可能没有这些权限)

  2. 文件名是否与脚本中的文件名完全相同?例如,一切都可能在您的开发平台上正常工作 - 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>