Не могу использовать переменную в PHP If - PullRequest
0 голосов
/ 17 декабря 2011

У меня проблемы с использованием переменной для имени каталога в этом выражении PHP if:

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

Когда я использую переменную ($newsDir) вместо строкового литерала для каталогаname ("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 голосов
/ 18 декабря 2011

Ничего себе.Я понял.Просто вы, очевидно, не можете использовать переменные вне функции.Я включил файл vars.php вне функции, которая вызывала ошибку.Я понятия не имею, почему вы не смогли бы сделать это, может быть, кто-то может просветить меня?

Спасибо за все комментарии.

0 голосов
/ 17 декабря 2011

Используйте следующее, чтобы проверить, где находится ошибка (пример с 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);
    }
}
?>
...