Php touch():Utime失败:不允许操作
我尝试运行此命令:Php touch():Utime失败:不允许操作,php,linux,raspberry-pi,touch,ntfs,Php,Linux,Raspberry Pi,Touch,Ntfs,我尝试运行此命令: php -r "touch('/mnt/my_drive/test.txt', 1600981328);" 我得到了这个错误: PHP Warning: touch(): Utime failed: Operation not permitted in Command line code on line 1 如果我使用sudo运行它,我不会得到错误 /mnt/my_驱动器是NTFS驱动器。挂载是在fsab中使用umask=000创建的,因此我不知道为
php -r "touch('/mnt/my_drive/test.txt', 1600981328);"
我得到了这个错误:
PHP Warning: touch(): Utime failed: Operation not permitted in Command line code on line 1
如果我使用sudo
运行它,我不会得到错误
/mnt/my_驱动器
是NTFS驱动器。挂载是在fsab
中使用umask=000
创建的,因此我不知道为什么会出现权限错误
请不要将此标记为重复,因为类似的问题有以下答案:
- 检查权限:它应该是正确的,因为
umask=000
- 在提升模式下运行composer/php:我希望避免以管理员身份运行Web服务器
- 在vendor中修改一些库文件:我甚至在命令行中也会遇到此错误,如我的示例所示
- 不要使用ntfs:这不是我的选择
编辑:在这种情况下,umask也不重要,重要的是包含该文件的目录的权限。除非由所有者发布,否则更新文件修改时间将失败。尝试清除缓存文件,并以PHP用户为所有者重新创建它们。除非需要与其他人一起归档,否则更改修改时间从来都不是一个好办法。这是仓促的,没有任何作用。我能告诉你的唯一一件事是你必须拥有这个文件,你可能需要root,只需要访问这些权限,而使用sudo你可以做任何事情。所以你对此没有希望了。我希望这能让你相信,对于你的客户来说,文件系统崩溃的另一种方式是什么。当用户PHP以非缓存文件所有者的身份运行时,可能会发生这种情况。检查此链接这是一个最小的可重复示例。我不想用这种方式调用touch,但是库可以。@IterAtor您读过文档了吗?它通常可以在自己的代码中指定任何问题。此外,如果它在GitHub上,您可以放心地提出代码问题,并由代码作者直接处理。您可以向我们展示fstab中的挂载行吗?如果它使用sudo工作,那肯定是权限问题。如果您在fstab中定义了
umask
,我的第一个问题是检查是否也定义了uid
和/或gid
?请添加有关所用场景的一些详细信息,例如确切的Linux发行版和版本、PHP版本以及当前装载数据以及所有选项/标志?谢谢