Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to check if a file exists under include path?

Tags:

php

yii

You get the current include path in PHP by using get_include_path()

I am wondering what is the lightweight way to check if the file can be included without issuing a PHP error. I am using Yii framework and I want to an import without issuing PHP error, but I fail.

like image 983
Pentium10 Avatar asked May 18 '11 07:05

Pentium10


2 Answers

As of PHP 5.3.2, you can use

  • stream_resolve_include_path — Resolve filename against the include path

which will

Returns a string containing the resolved absolute filename, or FALSE on failure.

Example from Manual:

 var_dump(stream_resolve_include_path("test.php"));

The above example will output something similar to:

 string(22) "/var/www/html/test.php"
like image 182
Gordon Avatar answered Oct 21 '22 10:10

Gordon


Before PHP 5.3.2 you can split the path and check each path in a loop:

$find = 'file.php'; //The file to find
$paths = explode(PATH_SEPARATOR, get_include_path());
$found = false;
foreach($paths as $p) {
  $fullname = $p.DIRECTORY_SEPARATOR.$find;
  if(is_file($fullname)) {
    $found = $fullname;
    break;
  }
}
//$found now contains the file to be included, or false if not found
like image 40
Emil Vikström Avatar answered Oct 21 '22 09:10

Emil Vikström