尝试使用 php 访问时,我只在单个 .csv 文件上看到奇怪的 Ubuntu 权限问题。该文件是 list.csv,归 ubuntu:www-data 所有,ubuntu 用户属于 www-data 组。该网站的其余部分工作正常,没有权限问题,但我在尝试使用 php 加载此文件时看到以下错误:
PHP Fatal error: Uncaught exception 'RuntimeException' with message 'SplFileObject::__construct(xxx/list.csv): failed to open stream: Permission denied'
如果我做 chown www-data:www-data list.csv,我可以用 php 加载。如果 ubuntu 拥有这个文件,为什么即使 ubuntu 是 www-data 组的一部分,这个文件也不会被 php 加载?
此外,我可以以 ubuntu 用户 (vi list.csv) 读写打开此文件。
编辑:文件的权限是:-rwxr-xr-x 1 ubuntu www-data
再次编辑:将权限更改为 0644 -rw-r--r-- 1 ubuntu www-data no lucky
再编辑一些:文件位于具有 x 权限的目录中:
drwxr-xr-x 3 ubuntu www-data 4096 Jul 28 23:09 内容/
不确定它与执行权限有什么关系,因为我可以将所有者更改为 www-data:www-data 并加载文件。这似乎与拥有文件而不是 www-data 的用户 ubuntu 有关
编辑:这行代码出错了,试图将.csv文件加载到php SplFileObject中:
SplFileObject::__construct("xxx/content/list.csv");
最佳答案
我可以在 OP 中看到所有者和组之间的唯一区别是 write
权限(您已尝试使用该组的 xr
和 r
)。所以,我怀疑你的 PHP
正在尝试打开 write
中的文件模式。
要确认此尝试:
$myCSV = new SplFileInfo('YOUR CSV');
$myCSV->isReadable(); // should be true
$myCSV->isWritable(); //expecting this to be false
编辑:如果您的程序出现这种情况,您可以使用以下命令以读取模式打开文件:
$myCSV->openFile('r')
关于php - 用户 ubuntu 的权限被拒绝,但 .csv 文件上的用户 www-data 却没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38648186/