在url中使用变量字符串时没有这样的目录(PHP)

时间:2012-10-25 16:32:13

标签: php

嗯,标题可能不是很有帮助。我不确定如何描述这个错误。我确信这是由于我的愚蠢行为造成的。但是对于我的生活,我无法理解。

以下是我要做的事情:我的目录“img / gallery”中有一个文件夹列表

在每个文件夹中都有图像

还有一个名为“img / thumbs”的文件夹,其结构完全相同但带有缩略图

我正在编写一个执行两项操作的脚本:它显示“img / gallery”中文件夹的名称,并显示一个缩略图列表,其中包含指向该文件夹中图像的链接。

这两个组件在单独运行时工作正常。放在一起,我在

收到错误

if ($handle = opendir('img/gallery/$file/'))

说$ file不是有效目录。

以下是代码:

`

if ($handle = opendir('img/gallery/')) {
$blacklist = array('.', '..', 'somedir', 'somefile.php');
while (false !== ($file = readdir($handle))) {
    if (!in_array($file, $blacklist)) {
        echo "<h2>$file</h2>\n";
    }
}
closedir($handle);
}

echo "<P class='gallery'>\n";


if ($handle = opendir('img/gallery/$file/')) {
    while (false !== ($entry = readdir($handle))) {
        if ($entry != "." && $entry != "..") {
            echo "<a class='fancybox' href='img/gallery/$file/$entry' data-fancybox-group='gallery'>\n<img src='img/thumbs/$file/$entry' alt='' /></a>\n";
        }
    }

    echo "</p>\n";

    closedir($handle);
}

`

建议会非常有用。谢谢!

2 个答案:

答案 0 :(得分:1)

opendir应该返回true或false但是它可能与if语句没有很好地协作试试这个:

$handle = opendir('img/gallery/'.$file.'/');
if ($handle) {

var_dump out $ file值也可以确保它是正确的。

当你要迭代每个文件夹中的每个文件时,你肯定需要在第一个中嵌入第二个while循环...?

答案 1 :(得分:0)

您是否尝试过变量报价?我总是引用我的变量,只是好的做法。

if ($handle = opendir('img/gallery/')) {
$blacklist = array('.', '..', 'somedir', 'somefile.php');
while (false !== ($file = readdir($handle))) {
    if (!in_array($file, $blacklist)) {
        echo "<h2>$file</h2>\n";
    }
}
closedir($handle);
}

echo "<P class='gallery'>\n";


if ($handle = opendir('img/gallery/' . $file . '/')) {
    while (false !== ($entry = readdir($handle))) {
        if ($entry != "." && $entry != "..") {
            echo "<a class='fancybox' href='img/gallery/" . $file . "/" . $entry . "' data-fancybox-group='gallery'>\n<img src='img/thumbs/" . $file . "/" . $entry . "' alt='' /></a>\n";
        }
    }

    echo "</p>\n";

    closedir($handle);
}