• Решено screamer

    (@screamer)


    Добрый день!

    Возникла проблемка. На сервере проект обновляется прямо из svn, соответственно, везде натыканы папки .svn . Проблема возникла после того, как наш админ проставил такие права этим папкам, чтобы к ним у апача не было доступа — в результате в админке чистая страница. Выяснилось, что функция get_themes перебирает все подпапки в папке тем и вычитывает их содержимое:

    $template_dir = @ dir("$theme_root/$template");
    		if ( $template_dir ) {
    			while ( ($file = $template_dir->read()) !== false ) {
    				if ( preg_match('|^\.+$|', $file))
    					continue;
    				if ( preg_match('|\.php$|', $file) ) {
    					$template_files[] = "$theme_loc/$template/$file";
    				} elseif ( is_dir("$theme_root/$template/$file") && is_readable("$theme_root/$template/$file") ) {
    					$template_subdir = @ dir("$theme_root/$template/$file");
    					while ( ($subfile = $template_subdir->read()) !== false ) {
    						if ( preg_match('|^\.+$|', $subfile))
    							continue;
    						if ( preg_match('|\.php$|', $subfile) )
    							$template_files[] = "$theme_loc/$template/$file/$subfile";
    					}
    					@ $template_subdir->close();
    				}
    			}
    			@ $template_dir->close();
    		}

    Но проблема в том, что папки .svn в каталоге есть, но зайти в них нельзя.

    Я просто заменил строчку 385 в файле wp-includes/theme.php
    } elseif ( is_dir("$theme_root/$template/$file") ) {
    на
    } elseif ( is_dir("$theme_root/$template/$file") && is_readable("$theme_root/$template/$file") ) {

    Репортить ли мне баг?

Просмотр 3 ответов — с 1 по 3 (всего 3)
  • Atrax

    (@atrax)

    Ethical engineer

    Почему нет? 🙂 мне это кажется правильным.
    А разработчики пусть сами решают, нужен ли им этот патч или нет.
    Куда репортить знаете?

    догадываюсь, вот пытаюсь разобраться, поискать похожие баги. Нашел багрепорт, где в том же самом файле theme.php проверяются аналогичные вещи — is_dir и is_readable (строки 268, 286, 315), а тут мало того что не проверяются, еще и результат

    $template_subdir = @ dir("$theme_root/$template/$file");
    while ( ($subfile = $template_subdir->read()) !== false ) {

    тоже не проверяется, вот и орет мне, что $template_subdir->read() типа метод несуществующего объекта.
    Как я все это буду по-английски писать, не знаю 🙂

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Можно сформулировать по-русски и совместными усилиями перевести 🙂

Просмотр 3 ответов — с 1 по 3 (всего 3)
  • Тема «папки .svn» закрыта для новых ответов.