使用php isn'检查文件是否存在;不行,需要帮助吗

使用php isn'检查文件是否存在;不行,需要帮助吗,php,file,exists,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." al

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

<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) 我需要事先得到提示和感谢

更新:

$\u url的值为

$this->data[''u url']= $this->config->get('config_url')

当我
时,会显示


通过使用上面的代码仅显示logo.png

您正在将
文件\u exists()
应用到一个无效的URL


您需要将其应用于文件系统路径。

文件存在
需要本地路径,而不是url。

使用()作为文件存在将返回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>

文件\u存在
可用于URL包装

在您的情况下,如果确实需要执行URL包装检查(速度会非常慢),请确保启用了URL包装(默认为启用)

另外,您的
$\uURL=
,请注意额外的斜杠可能会影响web服务器的重写

如果文件与web服务器位于同一服务器上,则应将
$\u url
替换为文档根目录(文件夹路径)


对于函数而言,
文件_存在
对于目录也返回true。您应该将其替换为
is_file

与这里的一些答案相反,file_exists可以将URL作为参数,它将检查它是否存在。不过,您最好还是使用文件系统路径,而不是URL

无论如何,我马上想到两个原因:

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

  • 文件名真的与脚本中的相同吗?例如,在您的开发平台上,一切都可以正常工作—Mac或Windows忽略文件名的字母大小写,但在Linux服务器上则不行,因为Linux服务器上的文件名必须是同一大小写


  • 您不是在检查文件是否存在,而是在检查URL是否存在。
    $\u URL
    的值是多少?您好,$\u URL的值是在我最近更新的上述内容中进行回显后的值对不起,但该代码可能显示logo.png。因为第一个条件是错误的