首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP上的is_writable总是错误的

PHP上的is_writable总是错误的
EN

Server Fault用户
提问于 2018-06-04 22:23:06
回答 1查看 1.1K关注 0票数 1

对不起,我不确定,如果这是正确的论坛,因为我不知道问题的原因,我面临。

我在Raspbian上安装了NextCloud (拉伸9),并将数据目录移动到一个挂载的NFS文件夹。当我试图访问NextCloud时,我得到了错误消息:“数据目录不可写”。

因此,我进行了更深入的研究,最终可以将问题与PHP7.0和NFS之间的交互隔离开来:

由于某些原因,应用程序可以写入目录,但 is_writable返回false

我创建了以下PHP脚本:

代码语言:javascript
复制

结果是

当我切换到像\tmp这样的本地目录时,一切都很好,用debug.php目录截图“/tmp”

我的NFS被安装为

代码语言:javascript
复制
192.168.1.100:/volume1/pidata/donut on /var/churros type nfs4 (rw,relatime,vers=4.0,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.103,local_lock=none,addr=192.168.1.100)

显然,用户映射和访问权限是正确的:

代码语言:javascript
复制
namei -l /var/churros/web/nextcloud/
f: /var/churros/web/nextcloud/
drwxr-xr-x root     root     /
drwxr-xr-x root     root     var
drwxr-xr-x root     root     churros
drwxr-xr-x www-data www-data web
drwxrwxr-x www-data www-data nextcloud

最后,在命令行上,作为用户www-data,我可以访问该目录并写入它。

所以:知道为什么PHP目录失败了吗?

EN

回答 1

Server Fault用户

发布于 2018-08-17 11:16:48

在您的代码中,您声明

代码语言:javascript
复制
$dirname = '/var/churros/data/nextcloud/';

但是,当您在下面演示权限时,您将显示

代码语言:javascript
复制
namei -l /var/churros/web/nextcloud/

我们如何知道dir数据是正确可写的?

结果是:

代码语言:javascript
复制
namei -l /var/churros/data/nextcloud/

??

另外,我很好奇

代码语言:javascript
复制
if (touch($dirname.'/chkpt.tmp')) {...

在上面的脚本中工作,它应该已经对/var/churros/data/ nextcloud //chkpt.tmp (注意,dir: nextcloud和filename chkpt.tmp之间的双斜杠)进行了操作。

我偶尔也会加入打字..。甚至错误的脚本,而不是复制/粘贴完全一样.我的观点是,乍一看,OP中似乎存在一些不一致之处,它们可能是在满足某些条件的同时导致错误的,或者非常简单地说,第一个变量声明需要修改以读取./web/nextcloud/以满足实际的dir需求。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/915172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档