Как исправить PHP Предупреждение: file_get_contents? - PullRequest
2 голосов
/ 28 сентября 2011

Я получаю следующее предупреждение:

Warning: file_get_contents(C:\xampp\htdocs\test/wp-content/themes/test\images) [function.file-get-contents]: failed to open stream: Permission denied in ..\plugins\theme-check\main.php on line 29

Строка 29 файла main.php читается как:

$other[$filename] = file_get_contents( $filename );

Вот код, связанный с $ files:

$files = listdir( $theme );

$files = array_merge( listdir( $parent ), $files );

if ( $files ) {
        foreach( $files as $key => $filename ) {
            if ( substr( $filename, -4 ) == '.php' ) {
                $php[$filename] = php_strip_whitespace( $filename );
            }
            else if ( substr( $filename, -4 ) == '.css' ) {
                $css[$filename] = file_get_contents( $filename );
            }
            else {
                $other[$filename] = file_get_contents( $filename );
            }
        }

        // run the checks
        $failed = !run_themechecks($php, $css, $other);

Насколько я понял, это ошибка разрешения.Поскольку файл не может получить доступ к этой папке.Я использую XAMPP в Windows 7. Я не знаю, как я могу изменить разрешения для папок в Windows.

PS.Обратите внимание на путь к папке в предупреждении, он имеет \, а также /.

Я не хочу отключать Предупреждение и т. Д. Вместо этого хочу исправить предупреждение.

Ответы [ 2 ]

2 голосов
/ 28 сентября 2011

Марк Б ударил его по голове. Вам нужно добавить тест, чтобы проверить, является ли имя файла каталогом с функцией php is_dir ($ filename)

   if ( $files ) {
    foreach( $files as $key => $filename ) {
        if ( substr( $filename, -4 ) == '.php' ) {
            $php[$filename] = php_strip_whitespace( $filename );
        }
        else if ( substr( $filename, -4 ) == '.css' ) {
            $css[$filename] = file_get_contents( $filename );
        }
        else {
            if(!is_dir($filename)) $other[$filename] = file_get_contents( $filename );
        }
    }

Редактировать

Если вы делаете что-то вроде просмотра каталога онлайн. Вы можете пойти дальше и включить каталоги в отдельный массив, отсортировать их и перечислить их первыми. а затем перечислите файлы. Я создал нечто подобное для динамической галереи.

0 голосов
/ 28 сентября 2011

Попробуйте использовать эту функцию PHP для замены пути Windows: getcwd () .Вам нужно будет объединить имена файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...