为了账号安全,请及时绑定邮箱和手机立即绑定

PHP 无法找到文件,即使它存在

PHP 无法找到文件,即使它存在

PHP
SMILET 2023-10-15 15:11:47
我在 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 Valueinclude_path    (other dirs)  .:/usr/share/phpopen_basedir    no value      no value然后我创建了另一个 PHP 文件并编写了此文件来检查 php 是否可以看到该文件:<?phpclearstatcache();$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/" // $dirstring(21) "HTMLPurifier.auto.php" // $filenamestring(36) "/usr/share/php/HTMLPurifier.auto.php" // $fullpathbool(true) // is_dir($dir)// $all_filesarray(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并且它有效。我也尝试重命名该文件,但一无所获。是什么赋予了?
查看完整描述

1 回答

?
catspeake

TA贡献1111条经验 获得超0个赞

在Linux中,普通用户(例如普通工作用户或网络服务器分配的用户)需要目录权限“搜索”(即位掩码)--x才能1访问目录内的文件。权限-r-或位掩码2仅使您能够读取目录内的文件名。

要解决该问题,您必须将目录的 chmod 更改/usr/share/php755.


查看完整回答
反对 回复 2023-10-15
  • 1 回答
  • 0 关注
  • 102 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信