我在/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 не существует");
}
答案 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 文件中使用CustomLog
和ErrorLog
伪指令为日志配置其他路径
示例:
CustomLog /var/www/html/logs/access.log combined
ErrorLog /var/www/html/logs/error.log
文档: