Wordpress plugin install: Could not create directory
Asked Answered
S

21

84

I'm using WordPress on centos 6.

I try to install a plugin. But I got this error:

Installing Plugin: bbPress 2.5.9 Downloading install package from https://downloads.wordpress.org/plugin/bbpress.2.5.9.zip

Unpacking the package…

Could not create directory.

How can I resolve this?

P/S: I run this command:

sudo -u root touch /var/www/html/wordpress/wp-content/plugins/test.txt

and it works. But I still get that error.

Styles answered 11/5, 2016 at 8:39 Comment(1)
test.txt is not a directory well it might be stupid what I write right now, but check if you can create a directory here. (just to make sure).Nudd
B
21

The user that is running your web server does not have permissions to write to the directory that Wordpress is intending to create the plugin directory in. You should chown the directory in question to the user that is running Wordpress. It is most likely not root.

In short, this is a permissions issue. Your touch command is working because you're using it as root, and root has global permissions to write wherever it wants.

Breadboard answered 11/5, 2016 at 8:47 Comment(4)
Obviously, but that doesn't tell us which directory to fix.Cavour
@Cavour it's not obvious to OP, obviously.Breadboard
it doesn't matter who you think it's obvious to or not (even though the error message literally says "couldn't create directory"), it doesn't answer the question.Cavour
Fair enough. I was more trying to explain what the problem was so he could understand how to fix things like this in the future.Breadboard
G
134

You only need to change the access permissions for your WordPress Directory:

chown -R www-data:www-data your-wordpress-directory

Best practices:

sudo find /var/www/html/wordpress/ -type d -exec chmod 755 {} \;
sudo find /var/www/html/wordpres/ -type f -exec chmod 644 {} \;

or

find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;

Where . is the path of WordPress directory.

Gettings answered 21/3, 2018 at 11:52 Comment(6)
your-wordpress-directory = "wp-content"Crossroad
In my case since I'm on a Mac it was chown -R _www:_www wp-content, actually sudo chown -R _www:_www wp-content.Mercorr
"your-wordpress-directory" does not tell me which directory is needed for plugins. Changing ownership of every directory in my Wordpress installation is unsafe, overkill, and may break other things.Cavour
felwithe, the directory needed for plugins changes when the wordpress directory changes. your-wordpress-directory signifies the place where you placed wordpress on your server.Breadboard
this is a bad practice and should be avoid.Courlan
I tried this on mac but I get tihs : sudo chown -R www-data:www-data /Applications/XAMPP/htdocs/word chown: www-data: illegal group nameKeikokeil
P
90

You can fix this by using the following commands. You should first be in the root folder of Wordpress.

sudo chown -R www-data:www-data wp-content/plugins/
sudo chmod 775 wp-content

sudo chown -R www-data:www-data wp-content/
Popinjay answered 26/12, 2018 at 10:45 Comment(5)
This should be the answer, because it tells us which directories to fix and how to fix them.Cavour
It worked for me. If you purged apache2 and wordpress on ubuntu , you have re-apply those permissionsDownbow
THIS ANSWER IS WORKED FOR MEBrom
Thanks! Worked for me. I'm using a WordPress docker container in Windows 10 WSL2.Twister
Today i tried the same setting and I am not able to access my website. Getting connection time out errorJetblack
B
21

The user that is running your web server does not have permissions to write to the directory that Wordpress is intending to create the plugin directory in. You should chown the directory in question to the user that is running Wordpress. It is most likely not root.

In short, this is a permissions issue. Your touch command is working because you're using it as root, and root has global permissions to write wherever it wants.

Breadboard answered 11/5, 2016 at 8:47 Comment(4)
Obviously, but that doesn't tell us which directory to fix.Cavour
@Cavour it's not obvious to OP, obviously.Breadboard
it doesn't matter who you think it's obvious to or not (even though the error message literally says "couldn't create directory"), it doesn't answer the question.Cavour
Fair enough. I was more trying to explain what the problem was so he could understand how to fix things like this in the future.Breadboard
I
17

A quick solution would be to change the permissions of the following:

  • /var/www/html/wordpress/wp-content
  • /var/www/html/wordpress/wp-content/plugins

Change it to 775.

After installation, don't forget to change it back to the default permissions.. :D

Iraqi answered 11/5, 2016 at 8:50 Comment(2)
Great quick fix for users without root accessQuest
In my case it changed permissions for wp-content but it its not allowing to change for plugins for wp-contentExtraditable
P
11

I had to give ownership of /plugins and /upgrade to the server, nothing else.

$ cd /var/www/wordpress/wp-content
$ sudo chown www-data:www-data /plugings
$ sudo chown www-data:www-data /upgrade

Running Apache server on Ubuntu 18.04. Maybe more dirs will need to be changed later. Anyways, I plan to restore permissions once I finish editing, as suggested in this anwser.

Pescara answered 5/6, 2019 at 1:58 Comment(2)
If other answers do not solve the problem, try this one! /upgrade directory is suspicious!Eckblad
bad practice indeed.Courlan
H
11

If you have installed wordpress using apt, the config files are split in multiple directories. In that case you need to run:

sudo chown -R -h www-data:www-data /var/lib/wordpress/wp-content/
sudo chown -R -h www-data:www-data /usr/share/wordpress/wp-content/

The -h switch changes the permissions for symlinks as well, otherwise they are not removable by user www-data

Helper answered 5/12, 2019 at 10:55 Comment(1)
how i can change permission on cents os serverGasworks
D
8

To solve permission issue on plugins and themes on localhost or production quickly, you just run this

sudo chmod 757 wp-content/themes
sudo chmod 757 wp-content/plugins

if take care permission on production, you can run

sudo chown -R www-data:www-data wp-content/themes
sudo chown -R www-data:www-data wp-content/plugins
Desirable answered 14/5, 2019 at 15:14 Comment(0)
P
7

CentOS7 or Ubuntu 16


1.

WordPress uses ftp to install themes and plugins.
So the ftpd should have been configured to create-directory

vim /etc/pure-ftpd.confg

and if it is no then should be yes

# Are anonymous users allowed to create new directories?
AnonymousCanCreateDirs       yes

lastly

sudo systemctl restart pure-ftpd

2.

Maybe there is an ownership issue with the parent directories. Find the Web Server user name and group name if it is Apache Web Server

apachectl -S

it will print

...
...
User: name="apache" id=997
Group: name="apache" id=1000

on Ubuntu it is

User: name="www-data" id=33 not_used
Group: name="www-data" id=33 not_used

then

sudo chown -R apache:apache directory-name

3.

Sometimes it is because of directories permissions. So try

sudo chmod -R 755 directory-name

in some cases 755 does not work. (It should & I do not no why) so try

sudo chmod -R 777 directory-name

4.

Maybe it is because of php safe mode. So turn it off in the root of your domain

vim php.ini

then add

safe_mode = Off

NOTE:
For not entering FTP username and password each time installing a theme we can configure WordPress to use it directly by adding

define('FS_METHOD','direct');

to the wp-config.php file.

Phagocyte answered 21/6, 2019 at 7:36 Comment(0)
A
7

If you are mac user , using XAMP

Go to the htdocs folder and open the terminal on the folder , as shown in the screenshot

enter image description here

Then Type the following command on the Terminal

**sudo chmod -R 777 <your wordpress folder Name>/**

E.g sudo chmod -R 777 wordpress/

Armallas answered 1/4, 2021 at 7:44 Comment(1)
This is very very dangerousCarver
H
4

You need to change the permission of the directory

  1. At first change the user HTML folder (replace yourcomputerusername)

    sudo chown yourcomputerusername:yourcomputerusername /var/www/html

  2. Next change the permission for the user

    cd /var/www/html

    sudo chmod -R goa=rwx wordpress

    or

    sudo chmod -R 777 wordpress/wp-content

Hairraising answered 29/12, 2020 at 2:50 Comment(0)
A
3

If anyone using shared hosting and get same problem it may be disk space issue. In that case contact with your hosting support and ask them to increase disk space of your acocunt.

Abott answered 14/12, 2018 at 19:39 Comment(1)
same case. So cleanup a spaceHolinshed
H
2

I was on XAMPP for linux localhost and this worked for me:

sudo chown -R my-linux-username wp-content

Hospitality answered 11/3, 2019 at 10:17 Comment(0)
I
2

What I end up doing is every time I create a WordPress project. in /www/html

I run below command

sudo chown www-data:www-data  wordpress_folder_name -R

hope this will help someone.

Imbibition answered 8/4, 2019 at 7:31 Comment(0)
H
2

You could try

sudo chmod goa=rwx -R /var/www/html
Hairraising answered 21/9, 2021 at 21:20 Comment(2)
You should edit your previous answer (from almost a year before) rather than making a new one https://mcmap.net/q/239925/-wordpress-plugin-install-could-not-create-directoryRetentive
bad security practice.Courlan
P
1

For me the problem was FTP server that WP is using to upload update. It had writting disabled in configuration, so just enabling it fixed the problem.

Shame on WordPress for providing such misleading error message.

Paraldehyde answered 14/4, 2019 at 18:12 Comment(0)
L
0

None of the above work for me except this one.

sudo chown daemon:daemon /opt/bitnami/apache/htdocs/

Don't forget to change /opt/bitnami/apache/htdocs/ to your directory

Len answered 9/4, 2021 at 6:35 Comment(1)
This is because every answer is for apache. You are using another distribution or server.Courlan
C
0

Webserver user must have write access to directories to perform such operations, so you can try to change owner of files to webserver user (apache in this example, but can be differ from yours)

chown -R apache YOUR_BLOG_DIRECTORY
Companionable answered 20/10, 2021 at 11:13 Comment(1)
Could you add some explanation as to what this does?Outport
S
0

If you are using some app that wraps http, you have to set these user in the command.

sudo chown -R [desireduser]:[desireduser] wp-content/

By example, if you are using lampp, the users that init httpd is "daemon" and the command that works will be:

sudo chown -R [desireduser]:[desireduser] wp-content/

You can search in your httpd.conf file enter image description here

Screwworm answered 18/9, 2022 at 22:17 Comment(0)
G
-3

To solve permission issue on ubuntu server, you just run this

sudo chmod 777 -R 'wordpress wp-content file location' 

for example.

sudo chmod 777 -R /usr/share/wordpress/wp-content
Gynecology answered 20/5, 2019 at 11:33 Comment(3)
This is a bad idea, 777 gives access to all users and processes to write these files.Helper
this is your call how you use chmod, i just given the solutionGynecology
If the issue happens on your local, it's fine to use 777.Pump
G
-4

wordpressProject is the project name.

/var/www/html/wordpressProject sudo chmod -R 777 wp-content

Thanks. It will work.

Galengalena answered 19/1, 2020 at 3:16 Comment(1)
never set 777 permissions unless u want to get hacked even by bots.Scorpio
E
-9

Absolutely it must be work!

  • Use this chown -Rf www-data:www-data /var/www/html
Exhalant answered 24/12, 2018 at 9:36 Comment(1)
You shouldn't give the webserver full control of the files in webroot.Isologous

© 2022 - 2024 — McMap. All rights reserved.