2014-02-19 3 views
1

У меня проблема с обновлением Wordpress, и мой поиск в Google не раскрывает решение. Надеюсь, вы много можете протянуть руку.Операция обновления Wordpress истекает через 5000 миллисекунд

Выпуск

Я пытаюсь обновить сайт работает Wordpress 3.7 к Wordpress 3.8.1, но он бросает ошибку ниже при нажатии на кнопку «Обновить сейчас».

Downloading update from https://wordpress.org/wordpress-3.8.1-new-bundled.zip

Download failed.: Operation timed out after 5001 milliseconds with 736947 out of 6333109 bytes received

Installation Failed

Экстра Информация

  • Это происходит в моей локальной среде разработки MAMP как сервер не имеет разрешения на живое обновление. Я надеялся запустить обновление, скопировать изменения кода, а затем нажать на сервер для тестирования.
  • загружает файл зип штраф при ударе «Скачать 3.8.1»
  • Другой, возможно, связано, проблема происходит на Plugins > Add New > Popular, который также выдает ошибку:

An unexpected error occurred. Something may be wrong with WordPress.org or this server’s configuration. If you continue to have problems, please try the support forums.

Try again

+0

Сделайте ручное обновление: http://codex.wordpress.org/Updating_WordPress#Manual_Update – RRikesh

+0

Это на localhost? –

+0

@ObmerkKronen да это на localhost – davur

ответ

5

После того, как мои руки грязные исследования в источнике Wordpress, я смог проследить проблему до деструктивного фильтра в плагине под названием «Дополнительные поля». Я отключил и удалил плагин, и все обновления снова работают.

Детали для тех, кому интересно

Я отслеживал его вниз к этой линии в WP_Http_Curl::request()

curl_setopt($handle, CURLOPT_CONNECTTIMEOUT, $timeout); 

функция по умолчанию тайм-аут 5, однако WP_Upgrader::upgrade() фактически вызывает функцию с помощью функции download_package, проходящей в 300-секундный тайм-аут.

Виновником здесь был плагин «More Fields», который включал следующий фильтр, который разбила массив аргументов и поэтому сброс тайм-аут по умолчанию:

// Prevent auto update to this custom plugin 
add_filter('http_request_args', 'prevent_update_check', 10, 2); 

function prevent_update_check($r, $url) { 
    if (0 === strpos($url, 'http://api.wordpress.org/plugins/update-check/')) { 
     $my_plugin = plugin_basename(__FILE__); 
     $plugins = unserialize($r['body']['plugins']); 
     unset($plugins->plugins[$my_plugin]); 
     unset($plugins->active[array_search($my_plugin, $plugins->active)]); 
     $r['body']['plugins'] = serialize($plugins); 
    } 
    return $r; 
} 

Не уверен, если это преднамеренно вредоносным. Он выглядит как целевой фильтр, но в WP_Upgrader все аргументы теряются.

Смежные вопросы