0

我正在使用 s3fs 将亚马逊 s3 驱动器安装到我的文件系统。当我使用 PHP 的 rename() 函数将本地文件移动到已安装的驱动器时,没有任何反应。rename() 可以用于这个吗?

$tempfile = $_SERVER['DOCUMENT_ROOT'].'/temp.png';
rename($tempfile,'/mnt/test.png');

上面的代码对我不起作用。驱动器似乎已安装,因为我可以看到它的文件。

事实证明这是一个权限问题——我用 s3fs 的“allow_other”选项修复了它,但现在我在使用 rename() 时遇到了这个 php 错误:

failed to open stream: Input/output error 
4

3 回答 3

3

通常,您不能跨文件系统重命名文件。您必须复制文件,然后删除原始文件。(问题不会出现,mv因为它会自动检测情况并执行整个复制/删除操作。)

于 2011-07-05T20:08:56.927 回答
0

我遇到了类似的问题,但我使用的是 Java。由于 s3fs 模拟文件系统,因此不可能将文件从一个 fs 复制到另一个。

我必须写两份文件;一个直接到本地 fs,然后一个到模拟驱动器。

于 2011-07-05T20:05:34.027 回答
0

在这里找到了这个 gem - 并且在尝试将文件上传到我安装的 S3 存储桶时解决了我的“输入/输出错误” :

最近,我在新安装的 r188 上遇到了臭名昭著的“输入/输出错误” 。S3 存储桶很好,其他一切都正确,但仍然无法正常工作。

花了很长时间才发现我的问题与作为 secretAccessKey 一部分的“ + ”字符有关。

我创建了一个新的访问密钥,并将该信息替换到/etc/passwd-s3fs文件中,一切都开始工作了。

于 2014-03-06T14:34:32.660 回答