PHP is_dir()在Windows网络驱动器上返回false

时间:2012-11-06 23:19:29

标签: php windows networking drive

我有一个网络驱动器映射到驱动器号X:\转到外部硬盘驱动器,路径为“\\ X-Drive \ Public \ Data”。

我正在使用Zend Server和Apache。

我的PHP命令很简单

$isFolder = is_dir("x:/");
echo($isFolder); //FALSE

你应该知道的事情:

代码:

$isFolder = is_dir("c:/");
echo($isFolder); //TRUE

按预期工作。

我以管理员用户身份运行Zend Apache服务。我知道这是正常工作的,因为在任务管理器中,httpd.exe进程显示正确的用户。

确实映射了驱动器。我已经尝试将它映射到几个用户,包括Zend Apache使用的相同用户无济于事。

我已经阅读了我能找到的关于此事的每一篇文章。我遇到的每个问题都存在于用户权限或拼写错误之中。我不知道我的问题如何落入任何一类。

我也尝试过:

system('net use X: "\\x-drive\public" password1 /user:username /persistent:no');
$isFolder(is_dir("x:/"));
echo($isFolder); //FALSE

我正在运行Windows Vista x64,生产代码将在Windows 7 x64中运行。

我可以遇到哪些其他问题?

1 个答案:

答案 0 :(得分:8)

对于网络共享,您应该使用UNC名称: "//server/share/dir/file.ext" Source

如果您使用IP或主机名,它应该可以正常工作:

$isFolder = is_dir("\\\\NAS\\Main Disk");
var_dump($isFolder); //TRUE

$isFolder = is_dir("//NAS/Main Disk");
var_dump($isFolder); //TRUE

$isFolder = is_dir("N:/Main Disk");
var_dump($isFolder); //FALSE