2010-03-24 45 views
0

Ubuntu服务器PHP 5.3通过Samba连接到Windows服务器共享。PHP is_file在Ubuntu上为Windows共享返回false(错误地)

我正在使用file_exists()检查Windows计算机上文件的可用性。它返回false,尽管文件路径确实存在。同时,完全相同的文件路径上的file_get_contents()工作正常。

我想知道它是否是一个权限问题,因为我在配置Windows共享上的文件权限时遇到了问题(它说我没有权限更改它们的权限)。当我通过Nautilus查看权限时,它表示用户和组都是root用户,拥有755个权限。我想将该组更改为www-data,但似乎无法做到这一点。

+0

您是使用绝对路径还是相对路径?我在Windows上遇到了一些奇怪的PHP相对路径问题。这不是帮助.... – Michael

+0

你可以给文件的路径(当你检查)?正如celalo所说,它可能是目录分隔符 - http://php.net/manual/en/function.file-exists.php – ccheneson

+0

路径:/media/k/Jobs-Microtech2/CDRemote.sta /media/k是一个拥有Windows共享的目录(通过Samba)。 另外,请记住,我可以用file_get_contents()打开文件,以便目录分隔符不会有任何问题。 一注:我发现去年11月份的一个PHP错误,表明连接/符号链接存在问题。显然他们已经修复了它,但我不确定它已经完成了。 我已经找到了一个解决方法: $ size = exec('stat -c%s'。escapeshellarg($ filepath)); 它返回一个不存在的文件或一个现有文件的整数。 – M3Mania

回答

0

它可能是目录分隔符。尝试preg_replace('%(\\|\)%', '/', $path)

+0

谢谢,但不是这样。我已经简化了,试图解决这个问题。我用已知的工作文件路径创建了一个字符串。我认为它与权限或某种符号链接有关。 – M3Mania