为什么file_exists找不到文件?

时间:2018-08-30 07:18:06

标签: php

我在/var/www/html/index.php有一个PHP脚本,需要打开/var/log/apache2/access.log

通过控制台,文件存在,而在浏览器中文件则相反。

这是我的代码:

$filename = '/var/log/apache2/error.log';
if (file_exists($filename)) {
    exit("Файл $filename существует");
} else {
    exit("Файл $filename не существует");
}

3 个答案:

答案 0 :(得分:3)

  

警告:   对于由于安全模式限制而无法访问的文件,此函数返回FALSE。但是,如果这些文件位于safe_mode_include_dir中,则仍然可以包括这些文件。

来自php-manual

答案 1 :(得分:0)

也许路径设置错误,请尝试

var_dump($_SERVER["DOCUMENT_ROOT"]."/myFolder/*");

使用Google搜索$ _SERVER路径coms。

或类似。

我们在error_reporting(E_ALL)的顶部,以查看未找到时返回的路径。

就像zane指出的那样,它很可能无法访问根文件,通常是受限制的区域。

答案 2 :(得分:0)

您可以将echo exec("whoami") . "\n";添加到脚本中,以了解谁是HTTP服务器使用的角色(通​​常为www-data,使用apache)并在服务器上配置权限。

您还可以在网络服务器的配置或 .htaccess 文件中使用CustomLogErrorLog伪指令为日志配置其他路径

示例:

CustomLog /var/www/html/logs/access.log combined
ErrorLog /var/www/html/logs/error.log

文档: