【问题标题】:Why check exists folder not working in php?为什么检查存在的文件夹在 php 中不起作用?
【发布时间】:2015-11-03 19:33:41
【问题描述】:
<?PHP
$path="\\\\192.168.1.8\\data\\CATEGORY_LIMIT\\1027\\JPN\\1027_1.0.indd_tmp";
if(folder_exist($path)){
                        echo "ok";
                    }
                    else
                    {
                    echo "No";
                    }
                    exit;
function folder_exist($folder)
{
    $folder = str_replace('\\\\', '/', $folder);
    // Get canonicalized absolute pathname

    $path = realpath($folder);

    // If it exist, check if it's a directory
    return ($path !== false AND is_dir($path)) ? $path : false;
}
?>

结果:否 所以我不能删除或重命名这个文件夹。 这个路径:“\192.168.1.8\data\CATEGORY_LIMIT\1027\JPN\1027_1.0.indd_tmp”复制到运行->回车->访问ok。 为什么文件夹存在不起作用? 如何检查存在的文件夹?

【问题讨论】:

  • 它不工作,因为它不存在,或者因为你的路径不正确。
  • 这个路径:"\\192.168.1.8\data\CATEGORY_LIMIT\1027\JPN\1027_1.0.indd_tmp" 复制到运行->回车->访问ok
  • 这个“复制到运行->回车->访问ok”是什么意思
  • 文件夹共享每个人都可以读/写
  • 您需要重新创建您的folder_exist() 代码,以便它读取 url 路径而不是绝对文件路径

标签: php


【解决方案1】:

您似乎正在访问远程共享(在机器 192.168.1.8 上),而不是本地文件。

您可以尝试使用内置函数 file_exists()。它应该支持网络共享检测,尽管我不希望 php 以与本地文件夹相同的方式处理网络共享。

通常我将网络共享挂载为本地文件夹,所以我可以使用标准路径访问它们(例如在 Linux 中的 /etc/fstab 中,或在 Windows 中映射驱动器)

【讨论】:

  • 是的。但我有共享文件夹
  • php 将查看您的本地文件系统,查找名为 c:/192.168.1.8/ 之类的文件夹。那不存在。
  • 我尝试在 C:\symlinks\data=\\192.168.1.8\\data 中创建快捷方式。它仍然无法正常工作。在这种情况下如何检查?
  • 它仍然不是本地文件夹。仅仅因为您可以浏览到资源管理器中的文件夹并不意味着该文件存在于您的本地计算机上。 PHP 正确地确定机器上不存在这样的 local 文件夹。我认为您需要做的是使用网络协议(例如,使用 FTP、SCP、SSH 等)远程访问该文件夹
  • 函数 file_exists 可以支持网络共享位置,但如果这不可靠我不会感到惊讶。可能破坏该功能的两件事是 php 运行的权限和 php.ini 设置。
猜你喜欢
  • 2013-06-26
  • 2013-10-08
  • 2012-11-05
  • 1970-01-01
  • 2014-05-11
  • 2016-10-08
  • 2016-12-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多