1

I'm trying to get a automatic plugin updater work on localhost, I had it working at one point on a live server but for some reason mid update it gives me an error of:

An error occurred while updating Test Plugin: Download failed. A valid URL was not provided.

I've tested the URL it gives me above the error message and in the log; both download the zip file containing the plugin immediately.

http://127.0.0.1/white/check-plugins/plugins/test-plugin.zip

The below object gets passed to the plugins_api filter.

stdClass Object
(
    [slug] => test-plugin.php
    [path] => test-plugin/test-plugin.php
    [name] => Test Plugin
    [new_version] => 2.0
    [last_updated] => March 20, 2015 04:27pm
    [sections] => Array
        (
            [description] => test
            [changelog] => <strong>test</strong>
        )

    [download_link] => http://127.0.0.1/white/check-plugins/plugins/test-plugin.zip
)

So, if I can get to the zip by visiting the URL directly, and the object seems to correspond mostly to what WP receives from other plugins, these two factors lead me to believe that the issue has something to do with localhost.

The plugin path matches the installation file:

www\black\wp-content\plugins\test-plugin

Edit :: I can follow the URL in the error which downloads the zip file to my browser then turn around and install that zip to my black WP plugins without a problem. Really seems like localhost.

So white is the install holding the updated plugin, black has the outdated plugin and sending the request to get the new update.

Am I missing anything in the object I'm passing? Are there any caveats to WordPress being on localhost that could affect this?

  • I'm not sure if [path] is valid. I use [plugin_name] with a value of the base plugin folder; and [slug] is the main file of my plugin (without the .php). – josh Mar 21 '15 at 2:27
  • @josh Thanks for the suggestion, I tried it but still giving me the same error. Pastebin Object – Howdy_McGee Mar 21 '15 at 2:45
  • Try this Pastebin. Since your plugin name and root folder are the same; the [plugin_name] and [slug] should be the same. – josh Mar 21 '15 at 2:48
  • @josh - Same issue saying invalid URL. I even tried mixing in path with your pastebin but neither changed the outcome unfortunately. – Howdy_McGee Mar 21 '15 at 2:53
  • 1
    Hmmm... I've never hosted on localhost; only on my live server. But I did encounter an error message when downloading; and making the change mentioned above fixed it for me. Perhaps there is something in localhost? I'm not sure. I'd by happy to jump in chat and see if we can figure it out. – josh Mar 21 '15 at 3:05
1

As it turns out there's a difference between 127.0.0.1 and localhost. Once I change my requests to:

http://localhost/white/check-plugins/plugins/test-plugin.zip

and a few other instances of the IP version, the update worked like a charm. Stack Overflow has some good answers on why this could be: What is the difference between 127.0.0.1 and localhost?

  • 1
    You can solve this specific issue by adding an hosts file entry that resolves "localhost" to 127.0.0.1 – gmazzap Mar 21 '15 at 16:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.