Hooch Posted March 10, 2010 Share Posted March 10, 2010 Hey all.I have copied the following code from php.net then changed it to my appropriateinfo.It always faults to false. <?php$filename = '/path/to/foo.txt';if (file_exists($filename)) { echo "The file $filename exists";} else { echo "The file $filename does not exist";}?> Is there another way to see if a file exists?Thanks Link to comment Share on other sites More sharing options...
justsomeguy Posted March 10, 2010 Share Posted March 10, 2010 That's the only way. If the file exists then it will always be true. If it's false then the filename you're giving it doesn't exist, it's as simple as that. Link to comment Share on other sites More sharing options...
Hooch Posted March 10, 2010 Author Share Posted March 10, 2010 One would think, but I cut my code and enter it to the address bar and it shows. So the code is directed tothe correct file. It should be true. Link to comment Share on other sites More sharing options...
Hooch Posted March 10, 2010 Author Share Posted March 10, 2010 Here is my existing code $rackcard = '/images/three_horse/' . $_GET['c'] . '_rackcard.pdf'; if(file_exists($rackcard)) { echo '<a href="' . $rackcard . '" target="_blank">Rack Card</a>'; } $_Get['c'] can be replaced with 2009The site in question is thecoachhousegallery.com ( thecoachhousegallery.com/images/three_horse/2009_rackcard.pdf )Just as a test I replaced $_Get['c'] with 2009 in my code and it still did not work.Just an FYI this website is on PHP 4 Link to comment Share on other sites More sharing options...
justsomeguy Posted March 10, 2010 Share Posted March 10, 2010 When you start a path with a slash it starts in the root of the filesystem, not the current directory. It's looking for a file in /images/three_horse/, not /home/coachhouse/public_html/images/three_horse/, which I presume is where the file actually is (whatever the account name is). You can either leave off the slash so that it starts in the current directory, or you can prepend the complete path.The lesson is to trust the code. Computers never make mistakes, programmers do. A computer will always do exactly what you tell it to, nothing more and nothing less. People seem to assume that it's the computer that made the mistake and not them, but that's never the case. Link to comment Share on other sites More sharing options...
gar onn Posted March 10, 2010 Share Posted March 10, 2010 and if you tried this:$filename = './path/to/foo.txt'; Link to comment Share on other sites More sharing options...
Hooch Posted March 10, 2010 Author Share Posted March 10, 2010 [code] $rackcard = 'images/three_horse/' . $_GET['c'] . '_rackcard.pdf';[/code]does not work either.I had even tried http://... Link to comment Share on other sites More sharing options...
Hooch Posted March 10, 2010 Author Share Posted March 10, 2010 and if you tried this:$filename = './path/to/foo.txt';Thanks for your input, but unfortunately it does not work Link to comment Share on other sites More sharing options...
boen_robot Posted March 10, 2010 Share Posted March 10, 2010 For that to work, your PHP file must be in the folder where the "images" folder is. Is it? Can we have links to both files? Link to comment Share on other sites More sharing options...
Hooch Posted March 10, 2010 Author Share Posted March 10, 2010 For that to work, your PHP file must be in the folder where the "images" folder is. Is it? Can we have links to both files?thecoachhousegallery.com/images/three_horse/2009_rackcard.pdf(The page this code is on is in the root directory)The page in question is... thecoachhousegallery.com/three_horse.php?c=2009If you select any other year the "Rack Card" image should not show.So try..thecoachhousegallery.com/three_horse.php?c=2010This should not show that image since there is no file for 2010 yet. Link to comment Share on other sites More sharing options...
boen_robot Posted March 10, 2010 Share Posted March 10, 2010 So, in reality, within three_horse.php (and not in a file that three_horse.php includes!), you have $rackcard = 'images/three_horse/' . $_GET['c'] . '_rack_card.pdf'; if(file_exists($rackcard)) { echo '<a href="' . $rackcard . '" target="_blank" onmouseover="MM_swapImage('Rack card','','images/three_horse/rackcard_over.jpg',1)" onmouseout="MM_swapImgRestore()"><img src="images/three_horse/rackcard_reg.jpg" alt="' . $_GET['c'] .' Rack Card" name="' . $_GET['c'] . ' Rack Card" width="61" height="38" border="0" id="' . $_GET['c'] . ' Rack Card" /></a> } Correct? If not, either show your true code, or create a separate, reduced example, where the problem still occurs, and show us that. Link to comment Share on other sites More sharing options...
Hooch Posted March 10, 2010 Author Share Posted March 10, 2010 Yes, it's in three_horse.phpnot included to it.Here is the full code <?PHPsession_start(); include 'db.php';$tbl_1 = 'tch_three_horse'; $tbl_2 = 'tch_three_horse_details'; $post_year = $_GET['c'];$timestamp = time(); $cur_year = date("Y",$timestamp);// Record a hit for each page viewunset($_SESSION['page']);$_SESSION['page'] = "three_horse_" . $_GET['c'] . ".php";if (!isset($_SESSION['time-three_horse_' . $_GET['c'] . '.php']) || time() - $_SESSION['time-three_horse_' . $_GET['c'] . '.php'] > 300){ $_SESSION['time-three_horse_' . $_GET['c'] . '.php'] = time(); include 'admin_zen_page_stats.php';}?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title><?PHP echo $site_title;?></title><link href="css/style.css" rel="stylesheet" type="text/css" media="screen" /><link rel="stylesheet" href="styleLytebox.css" type="text/css" media="screen" /><script type="text/javascript" language="javascript" src="js/lytebox/lytebox.js"></script></head><body onload="MM_preloadImages('images/three_horse/rackcard_over.jpg')"><table width="1000" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#6C0000" class="border"> <tr align="center"> <td height="109" align="left" valign="top"> <table width="998" border="0" cellspacing="0" cellpadding="0"> <tr> <td><img name="logo" src="images/logo.jpg" width="248" height="109" alt="" /></td> <td><img name="image" src="images/headers/horse.jpg" width="750" height="109" alt="" /></td> </tr> </table> </td> </tr> <tr align="center"> <td width="998" align="left" background="images/main_bg.gif"><?PHP include 'nav_links.php'; ?></td> </tr> <tr> <td align="left" valign="top"> <?PHP ////////////////////////////////////////////////////////////// // Current Tour // // // ////////////////////////////////////////////////////////////// if(isset($_GET['c'])) { //Show Details Block echo '<table align="center" cellpadding="0" cellspacing="0" width="886" class="news-border">'; echo '<tr>'; echo '<td colspan="3" background="images/three_horse/logo_large.jpg" height="200" align="right" valign="bottom">'; echo '<a href="images/three_horse/2009_SlideShow/2009_01.jpg" title="Image #1" rel="lytebox[house]"><img src="images/three_horse/2009_SlideShow/button.jpg" class="" style="background-color: #E7E7E7;border:none;"/></a>'; for ($i = 2; $i <= 21; $i++) { if($i <= 9)//images are numbered 01 to 21, so we need to add the "0" on images 1 through 9 { echo '<a href="images/three_horse/2009_SlideShow/2009_0' . $i . '.jpg" title="Image #' . $i . '" rel="lytebox[house]" style="border:none;"><img src="images/three_horse/2009_SlideShow/spacer.gif" class="" style="background-color: #242021;border:none;"/></a>'; } else { echo '<a href="images/three_horse/2009_SlideShow/2009_' . $i . '.jpg" title="Image #' . $i . '" rel="lytebox[house]" style="border:none;"><img src="images/three_horse/2009_SlideShow/spacer.gif" class="" style="background-color: #242021;border:none;"/></a>'; } } $rackcard = 'images/three_horse/' . $_GET['c'] . '_rackcard.pdf'; if(file_exists($rackcard)) { echo '<a href="' . $rackcard . '" target="_blank"><img src="images/three_horse/rackcard_reg.jpg" alt="' . $_GET['c'] . ' Rack Card" name="' . $_GET['c'] . ' Rack Card" width="61" height="38" border="0" id="' . $_GET['c'] . ' Rack Card" /></a>'; } echo '</td>'; echo '</tr>'; echo '<tr>'; echo '<td width="8">Â </td>'; echo '<td width="864" align="justify">'; //If it's the current year that was selected show the text for the details if($post_year == $cur_year) { $details = mysql_query("SELECT `info` FROM `" . $tbl_2 . "`") or die(mysql_error()); $r = mysql_fetch_array($details); include 'clean_show.php'; $info = clean_show($r['info']); echo '<div class="light-14">' . stripslashes($info) . '<br /><br /></div>'; } else { echo '<center><img src="images/three_horse/' . $post_year . '_left2.jpg" class="pic-border-larger" width="420" height="280">Â Â <img src="images/three_horse/' . $post_year . '_right2.jpg" class="pic-border-larger" width="420" height="280"></center>'; } echo '</td>'; echo '<td width="8">Â </td>'; echo '</tr>'; echo '</table>'; echo '<br />'; //Show all the Artists $th_sql = mysql_query("SELECT * FROM `" . $tbl_1 . "` WHERE `tour_year` = '$post_year' AND `active` = 1 ORDER BY `set_order` ASC") or die(mysql_error()); while($th = mysql_fetch_array($th_sql)) { echo '<table align="center" cellpadding="5" cellspacing="0" width="886" class="news-border">'; echo '<tr>'; echo '<td colspan="3"><strong class="light-14">' . $th['firstname'] . ' ' . $th['lastname'] . '</strong></td>'; echo '</tr>'; echo '<tr>'; echo '<td width="33%" align="center" valign="middle">'; echo '<img name="Left" src="images/three_horse/' . $th['tour_year'] . '_' . $th['firstname'] . '_' . $th['lastname'] . '_left.jpg" width="300" height="200" alt="" class="pic-border-larger"/>'; echo '</td>'; echo '<td width="34%" align="justify" valign="top">'; echo stripslashes(nl2br($th['info'])); echo '</td>'; echo '<td width="33%" align="center" valign="middle">'; echo '<img name="Right" src="images/three_horse/' . $th['tour_year'] . '_' . $th['firstname'] . '_' . $th['lastname'] . '_right.jpg" width="300" height="200" alt="" class="pic-border-larger"/>'; echo '</td>'; echo '</tr>'; echo '<tr>'; echo '</table>'; echo '<br />'; } } ?> </td> </tr> <tr height="15" class="light-9"> <td align="right" valign="middle"><?PHP include'copyright_main.php';?></td> </tr></table></body></html> Link to comment Share on other sites More sharing options...
thescientist Posted March 10, 2010 Share Posted March 10, 2010 is the folder 'images' in the same directory as three_horses.php? (i think you said this php page was in the root, right?) Link to comment Share on other sites More sharing options...
justsomeguy Posted March 10, 2010 Share Posted March 10, 2010 My mistake, it looks like file_exists always requires an absolute path, not a relative path. You can get the path to the directory of the current script with dirname(__FILE__). Link to comment Share on other sites More sharing options...
Hooch Posted March 10, 2010 Author Share Posted March 10, 2010 three_horse.php is in the ROOTThe .pdf file is in /images/three_horse Link to comment Share on other sites More sharing options...
boen_robot Posted March 10, 2010 Share Posted March 10, 2010 Replace if(file_exists($rackcard)) with if(file_exists(dirname(__FILE__) . DIRECTORY_SEPARATOR . $rackcard)) In Linux, "root" is the folder / But what you're reffering to as "root" is actually your "document root" - the root of your website, which is different than the OS root, e.g. /home/thecoachhousegallery.com/public_html/ so please forgive the confusion. Link to comment Share on other sites More sharing options...
Hooch Posted March 10, 2010 Author Share Posted March 10, 2010 My mistake, it looks like file_exists always requires an absolute path, not a relative path. You can get the path to the directory of the current script with dirname(__FILE__).Thanks man!Okay so I have changed some code here$rackcard = dirname(__FILE__) . '/images/three_horse/' . $_GET['c'] . '_rackcard.pdf'; This shows the correct path with a slash in front.And the code still comes up false when it should be true. $rackcard = dirname(__FILE__) . '/images/three_horse/' . $_GET['c'] . '_rackcard.pdf'; if(file_exists($rackcard)) { echo '<a href="' . $rackcard . '" target="_blank">Rack Card</a>'; } Link to comment Share on other sites More sharing options...
Hooch Posted March 10, 2010 Author Share Posted March 10, 2010 $rackcard = 'images/three_horse/' . $_GET['c'] . '_rackcard.pdf'; if(file_exists(dirname(__FILE__) . DIRECTORY_SEPARATOR . $rackcard)) { echo '<a href="' . $rackcard . '" target="_blank">Rack Card</a>'; } Still not working (I tried a forward slash in from of images too) Link to comment Share on other sites More sharing options...
justsomeguy Posted March 10, 2010 Share Posted March 10, 2010 Print out the full path you're asking it for, you should be able to verify through FTP or SSH that it's the correct path. Link to comment Share on other sites More sharing options...
boen_robot Posted March 10, 2010 Share Posted March 10, 2010 You're not outputting the correct path within the link. You instead need $rackcard = 'images/three_horse/' . $_GET['c'] . '_rackcard.pdf';if(file_exists(dirname(__FILE__) . DIRECTORY_SEPARATOR . $rackcard)) I also notice constant inconsistencies between the presence of "_" between "rack" and "card". Is there one or not? From what I noticed, it should be WITH one, i.e. $rackcard = 'images/three_horse/' . $_GET['c'] . '_rack_card.pdf';if(file_exists(dirname(__FILE__) . DIRECTORY_SEPARATOR . $rackcard)) Whatever the case, verify it! Link to comment Share on other sites More sharing options...
Hooch Posted March 10, 2010 Author Share Posted March 10, 2010 You're not outputting the correct path within the link. You instead need$rackcard = 'images/three_horse/' . $_GET['c'] . '_rackcard.pdf';if(file_exists(dirname(__FILE__) . DIRECTORY_SEPARATOR . $rackcard)) I also notice constant inconsistencies between the presence of "_" between "rack" and "card". Is there one or not? From what I noticed, it should be WITH one, i.e. $rackcard = 'images/three_horse/' . $_GET['c'] . '_rack_card.pdf';if(file_exists(dirname(__FILE__) . DIRECTORY_SEPARATOR . $rackcard)) Whatever the case, verify it! That did the trick!!Thank you so much!! Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.