Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

file_exists() isn't finding the file

if(file_exists("./squadra/photos/photog.jpg")) {
    echo "### YES ###";
} else {
    echo "### NO ###";
}

if i run this function on /zones/team.php it works (it print YES). If i run this function on /auth/ajax.php it print NO. Why?

EDIT

So i make some experiment.

1 - If i try :

// file on /zones/team.php
if(file_exists($_SERVER['DOCUMENT_ROOT']."/squadra/photos/provag.jpg")) {
    echo "YES";
} else {
    echo "NO";              
}

// file on /auth/ajax.php
if(file_exists($_SERVER['DOCUMENT_ROOT']."/squadra/photos/provag.jpg")) {
    echo "YES";
} else {
    echo "NO";              
}    

it says NO on both;

2 - If i try :

// file on /zones/team.php
if(file_exists("./squadra/photos/provag.jpg")) {
    echo "YES";
} else {
    echo "NO";              
}


// file on /auth/ajax.php
if(file_exists("../squadra/photos/provag.jpg")) {
    echo "YES";
} else {
    echo "NO";              
}

it says YES on both; But on team.php im using ./ and on ajax.php ../ ...why this works???

like image 940
markzzz Avatar asked Jan 22 '23 02:01

markzzz


1 Answers

Your last one works most probably because:

  1. You are calling zones/team.php from an index.php which resides in root. In this case ./ part correctly identifies your current directory.
  2. And for ajax, you must be calling it directly like auth/ajax.php, instead of something like index.php?type=jx&do=auth/ajax which would be the same as No.1. Hence this is not the case, you need to get out of auth first with ../, and then go on with squadra/....

Use absolute paths as often as you can. Relative paths are a pain for PHP to calculate them (in performance-wise).

like image 114
Halil Özgür Avatar answered Feb 01 '23 01:02

Halil Özgür