绝对路径不起作用但相对路径起作用

时间:2017-12-22 08:02:28

标签: php apache filepath

我在这条路径test.php

上有两个文件test1.phphttp://172.16.15.11/appointment/src/

我正在检查文件test1.php是否存在但是当我给absolute path时它不起作用:

我在test.php

中有以下代码
//giving absolute path not working
var_dump(file_exists('http://172.16.15.11/appointment/src/test1.php')); //return false

//but when i give relative path it does work
var_dump(file_exists('test1.php')); //return true

要交叉检查,我在include

中尝试了test.php
include('http://172.16.15.11/appointment/src/test1.php'); //but in this case absolute path work

如果我在给予绝对路径的时候我的作品

1. include('http://172.16.15.11/appointment/src/test1.php'); 

2. header('location:http://172.16.15.11/appointment/src/test1.php');

但是当我检查这个文件时不起作用:

var_dump(file_exists('http://172.16.15.11/appointment/src/test1.php')); //return false

注意 - 我没有任何.htaccess文件

3 个答案:

答案 0 :(得分:3)

</b>可以使用手册页中的某些网址,但无法保证...

  

提示从PHP 5.0.0开始,此函数也可以与某些URL一起使用   包装。请参阅支持的协议和包装器以确定哪个   包装器支持stat()系列功能。

你可以试试......

</html>

(来自http://www.php.net/manual/en/function.file-exists.php#75064

</html>也支持文件包装器(来自手册)......

  

如果&#34; URL   包括包装&#34;在PHP中启用,您可以指定文件   包含使用URL(通过HTTP或其他支持的包装器 - 请参阅   支持协议列表的协议和包装器)而不是   本地路径名。

但作为一项规则,我不会在网址中包含任何内容。

答案 1 :(得分:0)

问题是file_exists适用于文件系统目录路径,而不适用于URL。

如果您想使用绝对路径进行检查,可以使用getcwd()

找到它
file_exists (getcwd() . "/test1.php");

答案 2 :(得分:0)

不要忘记301等...只纠正200 ... 如果您不希望在错误日志中发出通知,请始终检查isset。

$headers = @get_headers('http://www.examle.com/somefile.jpg');
if(isset($headers[0]) AND $headers[0] == 'HTTP/1.1 200 OK') {
    $exists = true;
}
else {
    $exists = false;
}