【问题标题】:PHP file_put_contents() function fails after a drive is unmounted/remounted卸载/重新安装驱动器后 PHP file_put_contents() 函数失败
【发布时间】:2012-07-16 15:52:44
【问题描述】:

我有一个在 OSX 系统上运行的 CLI PHP 脚本,它将文件保存到连接的 NAS 驱动器。如果 NAS 被卸载然后重新安装,file_put_contents() 函数会失败并返回错误:

警告:file_put_contents(/Volumes/XXX/XXX.file) [/phpmanual/function.file-put-contents]:打开流失败:没有这样的文件或目录

我在写入前用clearstatcache() 清除文件缓存。驱动器已明确安装。

重新启动脚本没有帮助。到目前为止唯一可行的方法是重新启动机器。

有人对如何让 PHP “重新识别”连接的卷有任何想法吗?

【问题讨论】:

  • XXX 的东西会改变吗?例如在安装 #1 上它是 /Volumes/abc/foo.bar,但在安装 #2 上它实际上是 /Volumes/def?
  • 不,挂载点始终相同。其余的文件路径明显不同。
  • 开始做一些调试,在路径上的组件上做一系列is_diris_writeable等...,看看哪里出了问题。
  • 好主意马克。谢谢。会试试的。
  • 如果重新启动 Apache 而不是计算机会发生什么?只是想缩小问题的范围,可能是 Apache。

标签: php macos nas


【解决方案1】:

经过一番认真的挖掘,我发现它与文件系统有关,而不是 PHP。我通过运行以下命令解决了它:

exec('mkdir /Volumes/Mount_Point;
    mount_afp afp://user:pass@192.168.0.X/Mount_Point /Volumes/Mount_Point');

这会重新建立必要的链接(?),以便 PHP 脚本可以再次读取它。从 Finder 重新安装它不起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    相关资源
    最近更新 更多