用户ubuntu拒绝权限,但.csv文件上没有用户www-data权限

时间:2016-07-28 23:12:49

标签: php csv ubuntu

在尝试使用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'

如果我知道www-data:www-data list.csv,我可以用php加载。如果由ubuntu拥有,为什么这个文件没有被php加载,即使ubuntu是www-data组的一部分?

此外,我可以在ubuntu用户(vi list.csv)读写时打开此文件。

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

再次编辑:将权限更改为0644 -rw-r - r-- 1 ubuntu www-data no luck

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

不确定它与执行权限有什么关系,因为我可以将所有者更改为www-data:www-data并加载文件。这似乎与用户ubuntu拥有该文件而不是www-data

有关

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

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

2 个答案:

答案 0 :(得分:1)

我可以在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')

答案 1 :(得分:0)

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

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