【发布时间】:2012-04-12 08:53:27
【问题描述】:
当目录路径中有空间时,以下功能不起作用。例如,在以下路径中,目录名称为“Stack Overflow_files”,其中包含一个空格。
$dir = '/home/mamun/workspace/barj/barj/barj/Sequence/Stack Overflow_files';
$scanned_directory = array_diff(scandir($dir, 0), array('..', '.'))
或
$dh = opendir($dir);
while (false !== ($filename = readdir($dh))) {
$scanned_directory[] = $filename;
}
我可以从运行 ls '$dir' 的终端找到解决方案。但是php中有什么方法可以获取目录列表吗?
【问题讨论】:
-
它适用于我,名称中有空格。你确定没有其他问题吗?
-
我不知道。你确定它在linux环境中工作吗?当我从 PHP 运行终端命令时,空格甚至会给出错误的结果。比如 exec("du -hs $path");
-
空格对 shell 命令很重要,但对 PHP 文件系统函数没有影响。
-
如果我在终端中运行以下命令,它会完美运行。 dir /home/mamun/workspace/barj/barj/barj/Sequence/Stack\ Overflow_files/ 2>&1 但如果我从 php $out = array(); exec("dir /home/mamun/workspace/barj/barj/barj/Sequence/Stack\Overflow_files/2>&1", $out);它给出了权限被拒绝的消息。
-
这是一个权限问题,因此实际上与空间无关。您需要确保 PHP 具有对该目录的读取权限。 Web 服务器 (apache) 和 PHP 通常会以与您用于日常事务的本地用户不同的用户身份运行。在choice 的搜索引擎中搜索“Linux 文件权限”。如果您仍然遇到问题,请询问有关权限的另一个问题。