2015-03-26 24 views
1

我使用PHP来检查文件是否存在,然后获取它的大小。文件存在但使用UNC路径返回“系统找不到指定的文件”

代码之前工作很好,但现在我们正在使用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 


?> 

回答

3

有疑问时,运行Process Monitor.

严重的是,虽然,你应该监视您最喜爱的文件访问监控程序的过程。

我不得不冒险猜测,但文件名空间可能会导致您的问题。致电getsize时,您可能需要将$filename与一组引号包围。

当组装要传递给exec()的命令时,在命令和该命令的参数之间还需要一个空格。 (这个脚本生成等效的“getsizetest.txt”而不是“getsize test.txt”)

如果可能的话,您应该在本地机器上的interactive PHP shell上真正运行这些命令。

+0

我以为你把它与引号,但我用双引号添加包围$文件名,并没有帮助。我不确定我能够在服务器上运行它,必须与服务器组对话,但我一定会牢记这一点。谢谢@EKW! – mario 2015-03-26 21:07:40

+1

@ gv0000增加了一个关于我今天早上注意到的另一个错误的提示,我强烈建议使用PHP交互式shell(这就是让我注意到另一个bug的原因......如果我按照自己的建议开始...... ) – EKW 2015-03-30 16:02:32

相关问题