【问题标题】:How do I check whether a fuse folder is present如何检查保险丝文件夹是否存在
【发布时间】:2012-09-19 04:47:19
【问题描述】:

我在服务器上安装了一个指向 sftp 站点的文件夹。 我需要通过php检查我们是否可以看到里面的文件夹。

我试过了

file_exists("/path/to/the/mount/folder");

但它返回 false(我有点预料到),我可以通过文件系统并使用终端导航到它。

(也试过is_dir && is_link

这是我从外壳安装它的方法

echo PASS | sshfs UNAME@URL: /path/goes/here -o password_stdin

【问题讨论】:

  • 如果它安装在 FS 上,那么它应该和普通目录一样 - 操作系统抽象掉了它的 SFTP 的事实。 is_dir 会告诉你它是否是一个可读的目录。可能您没有权限从 PHP 中打开它(例如 apache 用户,如果 apache 正在通过 mod_php 运行您的 php)?
  • 有可能-我会检查
  • 我无法更改权限或所有者,即使是 root,我可能需要看看我是如何再次安装它的
  • @Veseliq 谢谢你为我指明了正确的方向
  • @allen213 没问题,很高兴为您提供帮助:)

标签: php fuse sshfs


【解决方案1】:

原来是配置问题。

/etc/fuse.conf我取消了user_allow_other的注释

然后用这个命令挂载

echo PASS | sshfs UNAME@URL: /path/goes/here -o password_stdin,allow_other

正常的文件/文件夹检查/读取功能将正常工作

【讨论】:

    【解决方案2】:

    你可以使用:

    $path = "/path/to/the/folder";
    $name_of_files = glob($path, "*.*");
    foreach($name_of_file as $filename)
    {
    echo $filename;
    }
    

    【讨论】:

    • 我知道如何使用 glob 和其他各种方法来检查标准文件夹或链接是否存在。这根本没有帮助
    【解决方案3】:

    路径应该是字符串,所以:

    is_dir("/path/to/the/mount/folder");
    

    另外,如果它是基于 unix 的,我总是忘记它是区分大小写的:P

    【讨论】:

    • 我只是替换了它,我会看到函数抛出的错误
    猜你喜欢
    • 2013-03-12
    • 2011-11-15
    • 1970-01-01
    • 1970-01-01
    • 2011-02-21
    • 2013-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多