如果语句不能在PHP中使用变量

时间:2011-12-17 18:23:37

标签: php variables content-management-system global-variables

我在PHP if语句中使用变量作为目录名时遇到了问题:

if (($handle = opendir("news"))) {
    // Read all file from the actual directory
    while ($file = readdir($handle))  {
        if (!is_dir($file)) {
            $fileList[] = $file;
        }
    }
}

当我使用变量($newsDir)而不是字符串文字作为目录名称("news")时,脚本将停止工作。

$newsDir = $_SERVER[DOCUMENT_ROOT] . "edit/news";
var_dump(file_exists($newsDir));
// bool(true)
var_dump(is_dir($newsDir));
// bool(true)
var_dump($newsDir);
// string(36) "/f5/jb-cms-testing/public//edit/news"
if (($handle = opendir($newsDir))) {
    // Read all file from the actual directory
    while ($file = readdir($handle))  {
        if (!is_dir($file)) {
            $fileList[] = $file;
        }
    }
}

它不会抛出任何错误,该函数无法正常运行。起初,我认为这是因为我的$newsDir变量是$_SERVER[DOCUMENT_ROOT] . "edit/news",但即使我将$newsDir设置为"news",它也不起作用。所以这与我使用变量的事实有关,据我所知。

任何想法为什么?此外,这是唯一的地方,也是$handle发生的唯一文件,所以我不确定它为什么会起作用。不久之前我构建了这个,我正在使用一个教程,所以我不确定它是如何工作的。它基本上只是一种对news目录中的文件进行排序的方法。

2 个答案:

答案 0 :(得分:0)

使用以下内容检查错误的位置(例如来自php.net)

<?php
// Report all PHP errors
error_reporting(-1);

$dir = $_SERVER[DOCUMENT_ROOT] . "edit/news";
if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {
            $fileList[] = $file;
            echo "filename: $file : filetype: " . filetype($dir . $file) . "read \n";
        }
        closedir($dh);
    }
}
?>

答案 1 :(得分:0)

哇。我想到了。只是你显然不能在函数旁边使用变量。我在函数之外包含了vars.php文件,这导致了错误。我不知道为什么你不能这样做,也许有人可以启发我?

感谢您的所有输入。