[resolved] Can't Add Media to Subfolder Sites (17 posts)

  1. dbeltramo
    Posted 3 years ago #

    I am setting up a multisite installation using subfolders on our corporate intranet. The problem is that we can't upload media to subfolder sites (uploading media to the main root site works fine). In the admin dashboard for a subsite, if I navigate to Media and try to add a new .jpg file, WP seems to think it's added, but the thumbnail has a broken image icon, and if I try to edit the image, WP tells me the image data does not exist.

    Troubleshooting steps so far: I've added what I think are the appropriate directives to .htaccess (pasted below), I've manually created the blogs.dir directory structure, made sure the directories are owned by the same owner and group as the Apache web process and are all 777'd. I've verified that mod_rewrite is working (pretty URLs are operating just fine). For the subsites, I've verified that the Upload Path is "wp-content/blogs.dir/2/files" (where the "2" varies depending on the subsite) and the Fileupload Url is "" (this is a POC box, so we only have it set up with an IP address, no entry yet in our corporate DNS). I've made sure every entry in httpd.conf for "AllowOverride" is set to "All." And now... I'm stumped, out of ideas.

    One potential clue, perhaps: If I go to the dashboard for one of the subsites, and then mouse over the "My Sites" menu in the WP header, the WP icons show up as broken images. This doesn't happen from the dashboard of the root site. I have no idea if that's relevant or not.

    At this point, I've Googled all that I can, and am stumped for an answer. If anyone has any leads, I'd really appreciate it. If it's relevant, this is running on a Fedora 17 box.

    Thanks for any help,


    # BEGIN WordPress
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    # uploaded files
    RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]
    # add a trailing slash to /wp-admin
    RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L]
    RewriteRule  ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L]
    RewriteRule  ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L]
    RewriteRule . index.php [L]
    # END WordPress
  2. dbeltramo
    Posted 3 years ago #

    Ok, if I manually copy a file called "image.jpg" and place it in the /var/www/html/wp-content/blogs.dir/2/files/2012/07/ directory, then the first 2 URLs work, but the third one gives me a 404.

    Hopefully that was the info you were looking for.

  3. No, no, don't manually copy :) Try to upload via the media tool. The ms-files one won't work if you don't do that ;)

  4. dbeltramo
    Posted 3 years ago #

    Oh, sorry!

    If I upload via the media uploader, none of the URLs works. Results: 404 A trailing slash gets added to the end of the URL, and the root site is displayed. 404

    Let me know if that's the sort of test you wanted me to perform, and thanks very much for the assistance!

  5. Okay... This one should have worked:

    I mean that's the default direct path.

    Is the .htaccess you showed the full .htaccess?

  6. dbeltramo
    Posted 3 years ago #

    Yes, that is the entire .htaccess file. It does seem like the file never gets written to the server.

    Are there any useful logs I could look at?

  7. Does the file even exist in wp-content/blogs.dir/2/files ?

  8. dbeltramo
    Posted 3 years ago #

    No, it does not exist in that directory, or anywhere on the filesystem, so far as I can tell.

  9. Okay, that's a problem... You can upload files into the main site, correct? And they end up in /wp-content/uploads?

    Is wp-content/blogs.dir a folder?

  10. dbeltramo
    Posted 3 years ago #

    Yes, I just verified it again -- I can upload files to the main site, and they do wind up in /wp-content/uploads/2012/07/. Also, yes, wp-content/blogs.dir is a folder.

  11. Is anything in blogs.dir? At all? You may need to delete it and start it over...

  12. dagarris
    Posted 3 years ago #

    Responding in place of dbeltramo - I've been working with him on this issue. I've deleted blogs.dir/ and recreated the folder, again assigning the owner and group as apache and assigning 777 permissions. There is nothing under the blogs.dir folder currently. When trying to upload media to a sub-directory, the following error message appears: "“06_Controls.jpg” has failed to upload due to an error
    Unable to create directory /var/www/html/wp-content/blogs.dir/2/files/2012/07. Is its parent directory writable by the server?"

    Previously, the only things that had been under blogs.dir/ were sub-directories that I manually created to correspond to this file path for uploads. When I manually created (under blogs.dir) 2/files/2012/07, the above error message no longer appeared, but the file failed to upload as dbeltramo described (broken thumbnail and empty sub-directory).

    This issue occurs on both of the sites currently created on the multisite install. If it helps at all, a related issue occurs when trying to add an image to a "slide", which comes as part of a theme installed on a specific sub-directory. When trying to create a new slide and upload an image for it, an error message dialog pops up: "Server error. Upload directory isn't writable."

    Thanks for your help.

  13. Well that error is pretty specific and explanatory... It can't write. You should only have to make the blogs.dir folder, and the rest will be built by WP. That they're not speaks to a PHP config error.

  14. dagarris
    Posted 3 years ago #

    Hmm... you're referring to an incorrect config setting in the php.ini file (not wp-config.php, right)? Any pointers on what to look to change here? I was wondering if there might be a permissions issue with something like upload_tmp_dir (which is currently set to NULL, and so should be using the system's default), but I couldn't see how that would explain uploads working on the main site, but not on a subfolder site.

  15. dbeltramo
    Posted 3 years ago #

    PROBLEM SOLVED! Mika, it was your suggestion that PHP couldn't write to the directory that ultimately led me to figure out what's up.

    Apparently, my Linux sysadmin skills have not kept up with the times. I don't pretend to understand what's going on, but apparently, Fedora uses SELINUX, which is some sort of extra security database on top of the standard filesystem RWX permissions. It was this post on the WP forums that fixed it for me:

    Running restorecon -R on the blogs.dir directory fixed the problem (after verifying the fix via the set enforce 0/1 commands). I've never run into this problem before, since I generally use Ubuntu rather than Fedora.

    Anyway, I just successfully uploaded two files to the problematic subsite.

    Thanks, Mika, for all your help troubleshooting the issue.

  16. AndyLaws
    Posted 3 years ago #

    Congrats for the solving the problem! :) Here I found useful information and URLs for myself. Thanks for all!

Topic Closed

This topic has been closed to new replies.

About this Topic