文件存在但在使用UNC路径时返回“系统找不到指定的文件”

时间:2015-03-26 18:15:04

标签: command-line php unc

我使用PHP来检查文件是否存在然后获得它的大小。

代码之前工作得很好但是现在我们正在使用UNC路径我可以检查路径是否存在于file(exists($filename))但是当我尝试运行exec("getsize" . $filename, $out);时,它会尝试运行大约一个分钟,然后它返回"系统找不到指定的文件"。运行它的用户当前是管理员,否则我认为这是一个权限问题,但我不确定如果用file_exists()查找文件但是exec()失败还有什么问题

非常感谢任何帮助或积分,谢谢!

代码示例:

<?php

$filename = "\\\\server\\share\\file_path_with_folders\\3019-74 (2).zip"; //Example file

if(file_exists($filename)){
    echo "File Exists: " . $filename . "\r\n";  
    // "File Exists: " . $filename" are getting echoed out, so it is succeeding
} else {
    echo "File doesn't exist: " . $filename  . "\r\n";
}

exec("getsize" . $filename, $out); //Runs command line command
//Getting "The system cannot find the file specified" error
echo "Out: " . $out[0] . "\r\n";
//Echos "Out: " and nothing else


?>

1 个答案:

答案 0 :(得分:2)

如有疑问,请运行Process Monitor.

但是,说真的,您应该使用您喜欢的文件访问监控实用程序来监控该过程。

我不得不冒险猜测,但文件名中的空格可能会导致您的问题。调用$filename时,您可能需要使用一组引号括住getsize

组装要传递给exec()的命令时,还需要在命令和该命令的参数之间留一个空格。 (这个脚本产生的等价于&#34; getsizetest.txt&#34;而不是&#34; getsize test.txt&#34;)

如果可能,您应该在本地计算机的interactive PHP shell中运行这些命令。