©
本文档使用
php.cn手册 发布
(PHP 5 >= 5.3.2)
stream_resolve_include_path — Resolve filename against the include path
$filename
)
Resolve filename
against the include path according to the same rules as fopen() / include .
filename
The filename to resolve.
Returns a string containing the resolved absolute filename, 或者在失败时返回 FALSE
.
Example #1 stream_resolve_include_path() example
Basic usage example.
<?php
var_dump ( stream_resolve_include_path ( "test.php" ));
?>
以上例程的输出类似于:
string(22) "/var/www/html/test.php"
[#1] zelnaga at gmail dot com [2014-06-17 14:48:58]
In case you're running a version of PHP that doesn't have this function...
if (!function_exists('stream_resolve_include_path')) {
function stream_resolve_include_path($filename)
{
$paths = PATH_SEPARATOR == ':' ?
preg_split('#(?<!phar):#', get_include_path()) :
explode(PATH_SEPARATOR, get_include_path());
foreach ($paths as $prefix) {
$ds = substr($prefix, -1) == DIRECTORY_SEPARATOR ? '' : DIRECTORY_SEPARATOR;
$file = $prefix . $ds . $filename;
if (file_exists($file)) {
return $file;
}
}
return false;
}
}
[#2] tambet dot matiisen at gmail dot com [2013-03-28 12:26:55]
stream_resolve_include_path() seems to cache it's output. After I renamed a file, I had to restart Apache for stream_resolve_include_path() to not return non-existing file name. This was on Windows.
[#3] kontakt at victorjonsson dot se [2012-04-25 08:13:11]
This seems to be a great alternative to file_exists.
if( file_exists(__DIR__.'/som-file.php') )
Goes way slower than:
if( stream_resolve_inlcude_path(__DIR__.'/som-file.php') !== false)
[#4] sebastian dot krebs at kingcrunch dot de [2011-02-16 15:03:29]
It really behaves like `include` and will only resolve the filename against the include-path, if the path is relative. It makes not much sense to resolve already absolute pathnames anyway.