Support » Localhost Installs » WordPress update fails, curl_exec hangs upon finishing download

  • Resolved Nevma



    We have a server with many WordPress installations. The updates there always worked correctly. Suddenly, all updates of major (!) plugins (like Jetpack, WPML) including the WordPress core upgrade itself fail at:

    Downloading update from http://...

    Now this does not seem to be a regular update issue:

    1. The PHP memory limit is high enough (256MB). Also the memory has been sufficient until now.
    2. The access writes are OK. We can check them via SSH. And many other minor plugins can be updated without problems.
    3. We tried the PHP5 AddType directive as suggested here, but the only result was that PHP broke terribly.
    4. The update file is downloaded alright each time. We can see it in the system tmp folder. It is there in full size, but with “tmp” exception. Also (as I will explain later) the process has not got to the point of unpacking it yet, so it is not an unzip problem (and, remember, the minor plugins are updated correctly, so unzip works for them).
    5. This happens in all our WordPress installations in this server regardless of their version. Ranging from 2.9 to 3.5.
    6. We do not believe that our IP is somewhere blacklisted. We can wget the files from the console and (as mentioned above) we see the temporary files being downloaded. Also (again) minor plugins are updated correctly.

    So the problem gets a little crazy. So we start hacking into the core code of WordPress. We put debugging messages through every single step of the update process and we get down to this:

    The process gets to a point where (in file /wp-includes/class-http.php, around line 1140) it executes a PHP curl command to download the update. It does a curl_init, then many curl_setopt calls and, finally a curl_exec.

    Well this curl_exec never returns. Really!

    Then we try to debug the curl download so, after several tries, we add a progress callback to it like this:

    curl_setopt($handle, CURLOPT_NOPROGRESS, FALSE);
    curl_setopt( $handle, CURLOPT_PROGRESSFUNCTION, function ( $resource, $file_descriptor, $length ) {
        echo $length . '<br/>';

    And then, after this addition, the curl_exec finishes fine and the upgrade goes on successfully!

    Any ideas?

Viewing 2 replies - 1 through 2 (of 2 total)
Viewing 2 replies - 1 through 2 (of 2 total)
  • The topic ‘WordPress update fails, curl_exec hangs upon finishing download’ is closed to new replies.