A general linux file permissions question: Apache and WordPress

I moved from a shared hosting to a VPS a few weeks ago and I’m having these annoying permission issues with WordPress. You know you can download and upgrade plugins (and wordpress itself) from the admin panel, but since I moved it started asking me my FTP credentials, which is kinda slow when I have to update ~20 plugins.

I think this should be some kind of rights issue. I looked that the shared hosting wordpress files, they all belong to the username and group kovshenin (kovshenin:kovshenin) and the files are -rw-r–r– and the directories are drwx-r-xr-x.

Read More

On my VPS apache runs under apache:apache and my files are kovshenin:kovshenin. What should I do to make them readable and writable by both kovshenin and apache?

Also, I changed the permissions to 0777 for all files and folders of my wordpress installation, that allowed me to install and delete plugins without FTP, but when I pushed to automatic upgrade to WordPress 2.8.1 it still asked me for my FTP account. Is that a wp issue or did I miss something?

Thanks.

Update: I managed to run id and id www-data on the MediaTemple shared hosting. User kovshenin is in group kovshenin, and www-data is in group www-data. No more groups. What’s the trick?

Another update Okay, I added the apache user to the kovshenin group, my wordpress files are kovshenin:kovshenin with rw-rw-r-- permissions and drwxrwxr-x permissions on directories, but something is still wrong. The user apache can access the files and folders, I can use the online Themes and Plugins editor in the wordpress admin panel, I’m able to make changes to the .htaccess file from within wordpress, but plugin/theme installation still asks me for FTP credentials!

Any ideas? Thanks.

Related posts

Leave a Reply

5 comments

  1. What should I do to make them readable and writable by both kovshenin and apache?

    • Create a new group, say “wordpress”.
    • Add both koveshenin and www-data users to the wordpress group.
    • Change the group owner of all the files to wordpress (using chgrp).
    • Make sure all the files are group writeable.
    • Set the g+s (setgid) permission bit on all the directories of interest.
    • Make sure kovshenin and apache’s default umask includes group read & write permission.

    The second last step is the trick. It means that whenever kovshenin or apache creates a file in those directories, the group owner will be set to wordpress (instead of kovshenin or apache).

  2. Assuming your wordpress install directory is /var/www/html to mass change all the files and directories to the proper permission use:

    sudo  find /var/www/html/ -type d -exec chmod 775 {} ;
    sudo  find /var/www/html/ -type f -exec chmod 664 {} ;
    

    To mass change the owner group of everything use:

    sudo chgrp -R <desired_username>.<desired_groupname> /var/www/html
    
  3. I had the same problem and I solved it turning off PHP ‘safe_mode’ in plesk, now WP can create folders and move files without any problems.

    I hope this help you.

  4. Currently, adding define('FS_METHOD', 'direct'); to wp-config.php might do the trick. Not sure that would have worked in ’09 though. See here for my similar case using nginx. I found that it was an essential step.