PHP-授予用户对ubuntu中root用户拥有的文件的权限

PHP-授予用户对ubuntu中root用户拥有的文件的权限,php,ubuntu,permissions,Php,Ubuntu,Permissions,我正在使用Jasperreports生成报告。当我生成新报告时,它将由root拥有644权限。因此其他用户没有查看此报表的权限。我想更改文件的所有权或更改权限。这样每个人都可以查看或下载报表 我尝试了下面的php函数 chmod($item, 0777); chown($path, 'www-data'); 它给 错误:没有执行此操作的权限 。因为它自己的根和当前用户是www数据。 任何人请帮助我,事实上,根据你所说的,所有用户都有查看该文件的权限。644表示所有者可以读写,而组和其他

我正在使用Jasperreports生成报告。当我生成新报告时,它将由root拥有644权限。因此其他用户没有查看此报表的权限。我想更改文件的所有权或更改权限。这样每个人都可以查看或下载报表

我尝试了下面的php函数

chmod($item, 0777);   

chown($path, 'www-data');
它给

错误:没有执行此操作的权限

。因为它自己的根和当前用户是www数据。
任何人请帮助我,

事实上,根据你所说的,所有用户都有查看该文件的权限。644表示所有者可以读写,而组和其他人只能读。如果脚本在读取该文件时出错,可能是因为is path中目录的权限,而不是文件本身

如果您可以像这样更改root拥有的文件的所有者或权限,那么它将颠覆unix文件权限的整个概念。想想看

但是,您始终可以更改运行这些报告的用户,或者在报告生成端添加逻辑,以作为文件所有者移动或更改文件的权限

顺便说一句,chmod777是一个丑陋的乱七八糟的东西,只有那些对unix权限知之甚少的人才会使用。专业人士不会这么做。您应该将对unix文件权限的理解提升到一个新的层次:
看起来很有希望

根据手册,所有者和超级用户有权这样做

而你只更改文件的mod或owner,就不行了。您还必须更改路径

尝试将文件名的所有者更改为用户。只有 超级用户可以更改文件的所有者

注意:此功能不适用于远程文件,因为要检查的文件必须可以通过服务器的文件系统访问

注意:启用安全模式时,PHP会检查所操作的文件或目录是否具有与用户相同的UID(所有者) 正在执行的脚本

尝试将指定文件的模式更改为中给定的模式 模式注意:当前用户是运行PHP的用户。它是 可能不是您用于正常shell或FTP访问的同一用户。这个 模式只能由在大多数系统上拥有该文件的用户更改

注意:此功能在远程文件上不起作用 必须可以通过服务器的文件系统访问

注意:启用安全模式时,PHP会检查文件或 要对其进行操作的目录的UID(所有者)与 正在执行的脚本。此外,您不能设置 SUID、SGID和粘性位


您不能更改您无权访问的文件的权限。您需要从用户
root
(根据您的问题)授予对
www-data
的权限。我建议您编写一个bash脚本或以root用户身份运行的东西(负责将权限更改为
www-data
)或修改(如果可能)Jasperreports以作为用户输出结果
www-data
我尝试了Jasperreports以用户[link]www-data[/link]的身份输出结果。但这是不可能的。所以我也考虑写一个bash脚本来更改权限。谢谢