我尝试运行此命令:
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_drive
是一个NTFS驱动器。该挂载是使用fsab
在umask=000
中创建的,所以我不知道为什么会出现权限错误。
请勿将其标记为重复项,因为类似的问题具有以下答案:
umask=000
答案 0 :(得分:0)
您的代码在安装了php7.4和ntfs的计算机上完美运行:
/ mnt / tmp类型上的/ dev / sdaX fuseblk rw,relatime,user_id = 0,group_id = 0,allow_other,blksize = 4096)
您确定要在其中执行此操作的目录是否允许您创建文件?目录是否存在?
如果您可以在不设置时间参数的情况下创建普通文件,则可能与ntfs或保险丝安装有关。
在这种情况下: 尝试在strace中运行php命令以查看实际失败的原因,这应该有助于查明错误。
编辑:在这种情况下,umask也无关紧要,重要的是包含文件的目录的权限。
答案 1 :(得分:0)
除非拥有者发布,否则更新文件修改时间将失败。尝试清除缓存文件,然后以PHP用户作为所有者重新创建它们。
答案 2 :(得分:0)
如果用户PHP的运行不是缓存文件的所有者,则可能会发生这种情况。检出此链接Utime failed: Operation not permitted
答案 3 :(得分:-1)
除非有必要向他人提出修改意见,否则永远不要以更改修改时间为切入点。仓促,没有任何作用。我唯一可以告诉您的是,您必须拥有文件,您可能需要root用户才能访问这些权限,而使用sudo可以执行任何操作。所以你对此没有希望。我希望这可以使您相信客户的文件系统崩溃的其他方式。