开发者

check file exist with php isn't working, need help

Please advise me, what wrong with my following code:

<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>

both images of $logo2 and $logo exists in the same directory, but the code only shows $logo (logo.png) I need pointers and thanks in advance

UPDATED:

the value of $_url is

开发者_开发知识库

$this->data['_url'] = $this->config->get('config_url');

and when i <?php echo $_url;?> that will show e.g. http://www.mysite.com

by using code at above only show logo.png


file_exists can be used for URL wrapper.

In your case, if you really need to perform URL wrapper checking (will be very slow), make sure URL wrapper is enabled (default is enabled).

And also, your $_url = http://www.mysite.com///image/data/logo2.png, take note the extra slash may affecting web server rewrite.

If the file is located at the same server as your web server, you should replace the $_url to document_root (path to the folder).

For function wise, file_exists return true for directory too. You should replace that to is_file


You are applying file_exists() to a URL which doesn't work.

You need to apply it to a filesystem path.


file_exists expects a local path, not a url.


Contrary to some answers here, file_exists can take an URL as a parameter and it will check whether it exists or doesn't. However, you're still better off using a filesystem path for file_exists instead of the URL.

Anyway, two reasons immediately come to mind:

  1. Do both files have the same permissions? (I.e., logo.png might have the necessary read permissions and logo2.png might not have them)

  2. Are the file names really the same as in the script? For example, everything might work fine on your development platform - a Mac or Windows which ignores letter case for filenames but not on a Linux server where the filename must be in the same case.


Use getimagesize() as file_exists will return 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>
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜