Wordpress, темы и Safe Mode On
создано 30.01.2010 22:43:14Поставил тут по просьбе знакомого движок для его сайта у себя на сервере. А у меня Safe Mode естественно On.
Вобще, последняя версия wordpress (2.9.1) уже даже порадовала, но не успел нарадоваться, как всплыла проблема. Никак не хотели устанавливаться темы из админского интерфейса.
Причем удалять и записывать в уже созданный каталог оно могло на ура. Это мне сразу сказало, что Safe Mode тут не причем.
Путем копания в исходниках в течении нескольких часов, была обнаружена некоторая особенность.
А именно, ребята зачем-то вместо того, чтобы создавать каталог старорусским народным способом:
mkdir('/pub/test');
делали это так:
mkdir('/pub/test/');
Ну а нам, умным чувакам ясно, что получается вместо того, чтобы создавать каталог test в /pub, мужики из wordpressa создают каталог / в несуществующем ещё /pub/test, а Safe Mode по простоте своей душевной считает, что UID у них не совпадает. Ну и говорит нам, а не пошли бы вы куда подальше?
В результате я решил, что искать где они этот ненужный слеш вставляют мне неинтересно, и рубанул проблему в корне.
Идем в файл /wp-admin/includes/class-wp-upgrader.php, и находим в районе 237-ой строки такую запись:
if ( !$wp_filesystem->mkdir($remote_destination, FS_CHMOD_DIR) )
Ну и, само собой, жестоко правим её на:
if ( !$wp_filesystem->mkdir(preg_replace( "!/\$!","", $remote_destination), FS_CHMOD_DIR) )
Ну вот всё и заработало.
«Важнейшей задачей для нас является сейчас: учиться и учиться» В.И. Ленин