php scandir没有抛出任何错误,但没有列出目录内容

时间:2016-09-08 14:45:08

标签: php

我正在尝试按照此处列出的php文档中的代码进行操作 http://php.net/manual/en/function.scandir.php

但是,当我运行代码时,不会显示任何内容。有人可以告诉我我在哪里犯错误吗?

我的代码

<?php
$directory = "/xyz/images/";
$images = glob($directory . "*.jpg");
foreach($images as $image)
{
  echo $image;
}
error_reporting(E_ALL);
?>

没有显示任何内容。我在Windows上使用xampp。 我也引用了这些问题 Listing all images in a directory using PHP

Get filenames of images in a directory

我也尝试过“c:/ xampp / htdocs / xyz / images /”,“/ xyz / images /”,“xyz / images /”,“/ images /”作为我的目录。

<?php
error_reporting(E_ALL);
$directory = scandir("linewalk');
$images = glob($directory . "*.jpg");
foreach($images as $image)
{
  echo $image;
}

?>

它现在抛出错误 解析错误:语法错误,意外'。'

<?php
error_reporting(E_ALL);
foreach (scandir(".") as $file)
echo $file . "\n";
?>

******感谢您的所有帮助和建议********* 工作并列出当前目录的内容 我目前在root / xyz / test中 所以要扫描/ xyz / images它应该是
    (SCANDIR( “QA / linewalk”) 警告:scandir(qa / linewalk,qa / linewalk):系统无法找到指定的路径 - 这是我在尝试时得到的

3 个答案:

答案 0 :(得分:1)

$directory = "/xyz/images/";

表示您从服务器(计算机)根目录中的xyz文件夹中获取文件。我认为没有这样的文件夹,你没有权限来访问它。

因此,您应该更仔细地设置路径,例如:

// path comes from yor server docroot
$directory = $SERVER['DOCUMENT_ROOT'] . "/xyz/images/";

// path comes from current folder in which your script is run
$directory = "./xyz/images/";

答案 1 :(得分:1)

您应该将目录转换为文件系统路径:

$directory = dirname(__FILE__) . "/xyz/images/";

此外,您可以使用RecursiveDirectoryIterator

$dirIterator = new RecursiveDirectoryIterator($directory);
$iterator = new RecursiveIteratorIterator($dirIterator, RecursiveIteratorIterator::SELF_FIRST);

foreach ($iterator as $file) {
    print_r($file);
}

答案 2 :(得分:0)

路径相对于php文件的位置。

因此,如果php文件和xyz目录位于同一个父目录中,那么只需使用

$directory=scandir(xyz/images/);