我在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
目录中的文件进行排序的方法。
答案 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文件,这导致了错误。我不知道为什么你不能这样做,也许有人可以启发我?
感谢您的所有输入。