用户ubuntu的权限被拒绝,但.csv文件上的用户www数据的权限未被拒绝


Permission denied with user ubuntu but not with user www-data on .csv file

在尝试使用php访问时,我只在一个.csv文件上看到奇怪的Ubuntu权限问题。该文件是list.csv,由ubuntu:www数据所有,而ubuntu用户是www数据组的一部分。网站的其余部分运行良好,没有权限问题,但我在尝试用php加载此文件时看到以下错误:

PHP Fatal error:  Uncaught exception 'RuntimeException' with message 'SplFileObject::__construct(xxx/list.csv): failed to open stream: Permission denied'

如果我选择www数据:www数据列表.csv,我可以用php加载。如果ubuntu拥有这个文件,为什么php不加载这个文件,即使ubuntu是www数据组的一部分?

此外,我可以以ubuntu用户(vi list.csv)的身份读写打开这个文件。

编辑:文件的权限是:-rwxr-xr-x 1 ubuntu www数据

再次编辑:将权限更改为0644-rw-r-1 ubuntu www数据无运气

编辑更多内容:文件位于具有x权限的目录中:drwxr-xr-x 3 ubuntu www数据4096 7月28日23:09内容/

不确定它是否与执行权限有关,因为我可以将所有者更改为www数据:www数据,然后加载文件。这似乎与用户ubuntu拥有文件而不是www数据有关

编辑:这行代码出错了,试图将.csv文件加载到php-SplFileObject:中

SplFileObject::__construct("xxx/content/list.csv");

我可以在OP中看到,所有者和组之间的唯一区别是write权限(您已经在组中尝试过xrr)。因此,我怀疑您的PHP正试图以write模式打开该文件。

要确认此尝试:

$myCSV = new SplFileInfo('YOUR CSV');
$myCSV->isReadable(); // should be true
$myCSV->isWritable();   //expecting this to be false

编辑:如果你的程序就是这样,你可以使用$myCSV->openFile('r') 在读取模式下打开文件

您的服务器可能设置了PHP open_basedir参数,这将阻止访问该目录之外的任何文件。

要验证这一点,请查看相关的php.ini文件(例如/etc/php5/apache2/php.ini),并检查是否设置了open_basedir行。