【问题标题】:Cannot move local file to mounted s3 drive? PHP无法将本地文件移动到挂载的 s3 驱动器? PHP
【发布时间】:2011-09-29 02:01:59
【问题描述】:

我正在使用 s3fs 将 amazon 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 

【问题讨论】:

    标签: php amazon-web-services amazon-s3 amazon-ec2 s3fs


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 这个问题实际上并不特定于 s3fs。
      【解决方案3】:

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

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

      花了很长时间才发现我的问题与 secretAccessKey 中的“+”字符有关。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-09-14
        • 1970-01-01
        • 2019-02-02
        • 1970-01-01
        • 2019-06-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多