我在 Ubuntu 18.04 上使用 Apache 2 運(yùn)行 PHP 7.4.9。我的 PHP 錯(cuò)誤日志中出現(xiàn)此錯(cuò)誤:“PHP 致命錯(cuò)誤:require_once():無(wú)法在 /var/www/testing.php 中打開(kāi)所需的 '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所以它就在那里。權(quán)限是 777,因?yàn)槲以趪L試解決問(wèn)題時(shí)更改了它們。然后,我訪問(wèn)了phpinfo();瀏覽器中的一個(gè)文件,并檢查該目錄是否位于包含路徑中并且open_basedir為空:Directive Local Value Master Valueinclude_path (other dirs) .:/usr/share/phpopen_basedir no value no value然后我創(chuàng)建了另一個(gè) PHP 文件并編寫(xiě)了此文件來(lái)檢查 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]));當(dāng)我在瀏覽器中訪問(wèn)它時(shí),我得到: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 可以掃描目錄,可以看到那里的文件,但說(shuō)它(或目錄中的任何其他文件)不存在。/var/www我測(cè)試了向內(nèi)部傳遞一個(gè)文件file_exists并且它有效。我也嘗試重命名該文件,但一無(wú)所獲。是什么賦予了?
1 回答

catspeake
TA貢獻(xiàn)1111條經(jīng)驗(yàn) 獲得超0個(gè)贊
在Linux中,普通用戶(hù)(例如普通工作用戶(hù)或網(wǎng)絡(luò)服務(wù)器分配的用戶(hù))需要目錄權(quán)限“搜索”(即位掩碼)--x
才能1
訪問(wèn)目錄內(nèi)的文件。權(quán)限-r-
或位掩碼2
僅使您能夠讀取目錄內(nèi)的文件名。
要解決該問(wèn)題,您必須將目錄的 chmod 更改/usr/share/php
為755
.
- 1 回答
- 0 關(guān)注
- 147 瀏覽
添加回答
舉報(bào)
0/150
提交
取消