我正在使用s3fs将amazon s3驱动器安装到我的文件系统中。当我使用PHP的rename()函数将本地文件移动到已安装的驱动器时,没有任何反应。重命名()可以用于此吗?
$tempfile = $_SERVER['DOCUMENT_ROOT'].'/temp.png';
rename($tempfile,'/mnt/test.png');
以上代码对我不起作用。驱动器似乎已安装,因为我可以看到它的文件。
事实证明这是一个权限问题 - 我用s3fs的“allow_other”选项修复了它,但是现在我在使用rename()时遇到了这个php错误:
failed to open stream: Input/output error
答案 0 :(得分:3)
一般情况下,不能跨文件系统重命名文件。您必须复制该文件,然后删除原始文件。 (mv
不会出现此问题,因为它会自动检测情况并执行整个复制/删除操作。)
答案 1 :(得分:0)
我遇到了类似的问题,但我使用的是Java。由于s3fs模拟文件系统,因此无法将文件从一个文件复制到另一个文件系统。
我必须写两份文件;一个直接到本地fs,然后一个到模拟驱动器。
答案 2 :(得分:0)
发现这个宝石here - 在尝试将文件上传到已装载的S3存储桶时解决了我的“输入/输出错误”:
最近,我在新安装的r188上遇到了臭名昭着的“输入/输出错误”。 S3存储桶很好,其他一切都正确,但仍然没有工作。
我花了很长时间才发现我的问题与作为secretAccessKey一部分的“ + ”字符有关。
我创建了一个新的访问密钥,并将该信息替换为 / etc / passwd-s3fs 文件,所有文件都开始工作。