我在 Ubuntu 18.04 上使用 Apache 2 运行 PHP 7.4.9。
我的 PHP 错误日志中出现此错误:
“PHP 致命错误:require_once():无法在 /var/www/testing.php 中打开所需的 'HTMLPurifier.auto.php' (include_path='(其他目录):/usr/share/php:(其他目录)')第 8 行,引用地址:http://localhost:8080/testing.php”
所以我检查了该文件是否存在于/usr/share/php:
# ls -lah /usr/share/php
> -rwxrwxrwx 1 www-data www-data 274 Aug 15 15:53 HTMLPurifier.auto.php
所以它就在那里。权限是 777,因为我在尝试解决问题时更改了它们。
然后,我访问了phpinfo();浏览器中的一个文件,并检查该目录是否位于包含路径中并且open_basedir为空:
Directive Local Value Master Value
include_path (other dirs) .:/usr/share/php
open_basedir no value no value
然后我创建了另一个 PHP 文件并编写了此文件来检查 php 是否可以看到该文件:
<?php
clearstatcache();
$dir = '/usr/share/php/';
$filename = 'HTMLPurifier.auto.php';
$fullpath = $dir . $filename;
var_dump($dir);
var_dump($filename);
var_dump($fullpath);
var_dump(is_dir($dir));
$all_files = scandir($dir);
var_dump($all_files);
var_dump(file_exists($fullpath));
var_dump(file_exists($dir . $all_files[12]));
当我在浏览器中访问它时,我得到:
string(15) "/usr/share/php/" // $dir
string(21) "HTMLPurifier.auto.php" // $filename
string(36) "/usr/share/php/HTMLPurifier.auto.php" // $fullpath
bool(true) // is_dir($dir)
// $all_files
array(40) {
(other files)
[12]=> string(21) "HTMLPurifier.auto.php"
}
bool(false) // file_exists($fullpath)
bool(false) // file_exists($dir . $all_files[12])
所以 PHP 可以扫描目录,可以看到那里的文件,但说它(或目录中的任何其他文件)不存在。/var/www我测试了向内部传递一个文件file_exists并且它有效。我也尝试重命名该文件,但一无所获。
是什么赋予了?
catspeake