gpt4 book ai didi

php file_exists 返回 false 即使我的 linux 上存在文件

转载 作者:IT王子 更新时间:2023-10-29 00:50:15 26 4
gpt4 key购买 nike

这个问题已经被问过很多次了,但我找到的答案都没有帮助我。

我正在尝试让 php file_exists() 工作。它工作的唯一场景是当 php 文件与要使用 file_exist() 的文件位于同一目录中并且仅使用文件名(即不包括路径)时。但这不是结果行为,请参见下文。

索姆信息:

  • 安全模式=关闭
  • 目录 28 没有符号链接(symbolic link)
  • 文件名中没有空格
  • /var/www/html/smic/upload/28/中的所有目录都有 apache:apache 777 作为权限。
  • 使用 php 5.3

PHP:

echo getcwd()
clearstatcache();
$file = 'file:///var/www/html/smic/upload/28/ul.txt';
//Also tried like this
//$file = '/var/www/html/smic/upload/28/ul.txt';

if(file_exists($file)){
echo $file." exists";
}

getcwd() 打印/var/www/html/smic/modules/core/ticket

php脚本的权限和要检查的文件是apache:apache 777。

关于目录结构的一些细节:

[root@localhost 28]# pwd
/var/www/html/smic/upload/28

[root@localhost 28]# ls -l ul.txt
-rw-r--r--. 1 apache apache 2 Feb 9 10:50 ul.txt

[root@localhost 28]# chmod 777 ul.txt

[root@localhost 28]# ls -l ul.txt
-rwxrwxrwx. 1 apache apache 2 Feb 9 10:50 ul.txt

更改文件的权限后,行为没有改变。目录/28 有 drwxr-xr-x。对于 apache 用户和 apache 组

为了测试,我还将实际的 php 脚本移动到/28,并赋予它 apache:apache 777 权限。将 $file 更改为“ul.txt”(即 $file = 'ul.txt';)。行得通,找到了 ul.txt 文件。

getcwd() 然后打印/var/www/html/smic/upload/28

作为另一项测试,我试图在“ticket”目录中查找除路径之外的另一个文件,但无法识别该文件。

我在敲我的头...

欢迎任何建议。

最佳答案

仅文件的权限不足以让 php 评估 file_exists。运行 php 的进程还需要权限遍历该文件的所有父目录才能访问它。

一一检查,验证php可以读取和输入(r-x)

ls -ald /var
ls -ald /var/www
ls -ald /var/www/html
ls -ald /var/www/html/smic
ls -ald /var/www/html/smic/upload
ls -ald /var/www/html/smic/upload/28

关于php file_exists 返回 false 即使我的 linux 上存在文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9211928/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com