I moved several WordPress install from a server that is running Plesk to one that is running WHM/cPanel. After the move I am unable to access the site. I get:
Forbidden
You don't have permission to access / on this server.
I also get:
403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.
I have checked all the permissions and owners but everything seems to be fine but still nothing is working. I am not sure what to do now.
My process for transferring the site was to tar httpdocs using ssh to connect to the Plesk server then I replaced the public_html directory with the contents of the httpdocs.tar.gz on the cPanel server.
What did I do wrong?
The group needed to be changed on the public_html file to "nobody". The group was still set as the set group in Plesk.
chown owner:group folder
The files might have too much rights or too less or they are owned by the wrong user. Please check which user is supposed to own them and run the following comments:
sudo find /var/www/ -type f -exec chmod 644 {} \;
sudo find /var/www/ -type d -exec chmod 755 {} \;
sudo chown webuser:webuser -R /var/www/
Replace webuser with the right user and /var/www/ with the right directory.
Related
I want to install WordPress. Sounds easy, but unexpected errors occurs.
The install page loaded with only html content (no style ). when you click next, a
"Forbidden You don't have permission to access this resource."
All requested file permissions and .htaccess are verified.
The server have let's encrypt SSL and HTTP/2 enabled.
Any Idea
I never had any problems installing Wordpress on a http2 server.
If you are on a linux server with shell-access: navigate in your wordpress directory and try this in the SSH console to set the permissions right:
chown USER:GROUP -R *
chown all files & directories (recursive) to the Webservers USER & GROUP. Replace USER & GROUP with the CORRECT (!) values depending on your hosting. Something like www-data:www-data for example).
You can find the right USER & GROUP if you check another directory or file that is automatically created by the hosting (error docs or the httpdocs folder - depends on your hosting)
Then:
find . -type d -exec chmod 755 {} \;
(set all subdirectories to 755)
find . -type f -exec chmod 644 {} \;
(set all files to to 644)
Regards Tom
To give first some history to this problem; I'm setting up a django site on digitalocean first copied using root and the django folder had as the owner root and I've since worked on fixing this and now the site it up and running but one image still has the 403 forbidden error.
I'm looking for a command that can change the rights of this file.
-rwxr----- 1 sammy sammy 566719 Jul 1 14:52 developer.jpg
Your NGINX user is likely using the www-data or a different user, to verify the user being used by NGINX in a shell execute:
grep user /etc/nginx/nginx.conf
Then to change the file permissions:
chown www-data:www-data developer.jpg
Looking at your file permissions they also needed adjusted - see this answer for recommended perms.
(may require sudo, replace www-data with your NGINX user)
chmod -R 777 folder_name
chmod -R 777 file.name //when You are in directory where this file exist
or
chmod -R 777 file_path/file.name
I have installed a LAMP server (Ubuntu) on a VPS and everything seems to be running fine. After uploading and installing WordPress I ran into a couple of rights issues (not being able to upload, not being able to create/change the .htaccess file from within WordPress, the usual) so I chmod the directory so the www-data user is owner:
sudo chown -R www-data:www-data /var/www/domain.com/public_html/
Now all of the above works fine, but...
When I upload a file or directory the owner/group is set to the user I'm using to "FTP" with. This results in WordPress not being able to update the files (e.g. a plugin). The user I'm using for FTP transfer is part of the www-data group.
What should/can I do to prevent this and thus automagically add the www-data owner/group to uploaded files? And is this the way to go?
Think I found it: https://help.ubuntu.com/lts/serverguide/httpd.html
Sharing Write Permission
sudo chgrp -R www-data /var/www/domain.com
sudo find /var/www/domain.com -type d -exec chmod g=rwxs "{}" \;
sudo find /var/www/domain.com -type f -exec chmod g=rw "{}" \;
First of all I read a lot of topics from stackoverflow and other sites but I can't find the answer.
I am trying to setup my own WordPress hosting solutions for my WordPress sites. So, I have server from digitalocean I install nginx,hhvm and mysql.I can install WordPress without errors. But when i try to install plugin from WordPress dashboard, WordPress asks my ftp credentials. How can I remove that and automatically install plugins without ftp credentials?
I know I can modify wp-config file adding define('FS_METHOD','direct') but at that time i am getting 'Could not create directory.' error and this is not right solution because every time I install new wordpress I should do it again and again.
Another thing writing ftp credentials to wp-config file again not right solution because i have to repeat again and again in every site.
Last thing I found is this code;
sudo chown -R www-data:www-data wordpress-foldername
it works but again i have to do that for every wordpress site. Can i automate this? I don't want to make this every install new wordpress. How can i configure one time and it works all the time?
I also used Digital Ocean for hosting personal and development project,
Whenever I have a new project I need to used command line to install wordpress, and configure the install, so I'm not sure how you did it.
Here's the full code, using command line
browse to the html directory
cd /var/www/sites-folder-directory
download wordpress package and extract
wget http://wordpress.org/latest.tar.gz && tar xfz latest.tar.gz
move wordpress files to root folder & Delete Wordpress Folder and tar file
mv wordpress/* ./
rmdir ./wordpress/ && rm -f latest.tar.gz
Assign these new files and folders to default nginx user and group, you should check your default nginx user and group under /etc/nginx/nginx.conf
chown -R nginx:nginx /var/www/sites-folder-directory
Not really nescessary but if you want to change folder and file permission you can use command below
# Change Folders Permission
sudo find <directory> -type d -exec chmod 755 {} \;
# Change Files Permission
sudo find <directory> -type f -exec chmod 644 {} \;
if you have correct folders and files permission and the current directory is assign to default user and group it wouldn't ask for FTP credentials
if you want to do it for every website that already installed so you have to change the file owner inside /var/www to www-data.
So your command should be like this
$cd /var/www/
$sudo chown -R www-data:www-data *
this will affect all of your websites
I'm hosting a wordpress site on ec2 and I'm trying to update my theme through the admin screen. Its asking me for Hostname and ftp username and password. Is ec2-xxx.compute-1.amazonaws.com:22 my hostname? I tried along with ec2user and root for my ftp username but no luck. What am I doing wrong?
Skip the FTP info altogether and just change the permission of the directory structure where Wordpress is installed.
VIA SSH
sudo chown -R apache:apache path/to/wordpress
sudo makes sure you execute as the root user
chown will change the owner of the directory
-R will make it recursive, so it changes all files and directories within
apache:apache is user:group
And then the path to wordpress. Could be /var/www/html/sitename.com or if you navigate to the folder where Wordpress is installed, you can use a period (.) to tell it to change the current directory.
This will make is so that you can't copy files via sftp though, so it is good to change at least the themes directory back to the ec2-user:ec2-user user and group.
So this changes back to your ssh/sftp user:
sudo chown -R ec2-user:ec2-user path/to/wordpress
You can assign the folders to the ftp user and the apache group and then make them group writable as well. This will allow you to ftp into the directory, and allow everything to be auto updated within Wordpress.
// Set the wp-contents into the apache group and then make files group writable
sudo chgrp -R apache wp-content
sudo chmod -R g+w wp-content
// This makes new files created in wp-content and all of its sub-directories group-writable.
sudo chmod g+s wp-content
Then add this to wp-config.php to force Wordpress to update when only applying this wp-content:
define('FS_METHOD', 'direct');
You can also apply to the whole Wordpress install to auto update Wordpress and not just plugins/themes. If you do this, I would recommend putting your wp-config.php file one directory above your Wordpress install though, so you can lock it down separately.
EDIT: Whenever I am having permission troubles on EC2, I go to site root directory, and paste these lines in. I apply it to the whole Wordpress install these days:
sudo find . -type d -exec chmod 0755 {} \;
sudo find . -type f -exec chmod 0644 {} \;
sudo chown -R ec2-user:apache .
sudo chmod -R g+w .
sudo chmod g+s .
I use something similar on my Mac as well.
In your wp-config.php under directives add this line:
define('FS_METHOD', 'direct');
You can simply solve this problem by doing this via ssh:
sudo chown -R apache path/to/wordpress
then
sudo chmod -R 755 path/to/wordpress
Your hostname would be ec2-107-20-192-98.compute-1.amazonaws.com.
Your username will be the username you use to SFTP to the instance normally - ec2user for some instance types, ubuntu for Ubuntu AMIs, etc. EC2 generally doesn't use passwords, preferring SSH keys, so you'll have to set a password for your account by doing passwd on the commandline.
Try adding FTP credentials to wp-config.php: http://codex.wordpress.org/Editing_wp-config.php and http://codex.wordpress.org/Editing_wp-config.php#WordPress_Upgrade_Constants
That should make WP admin stop asking for FTP details. But depending on how you've set up permissions via the command line, may have to go to the command line to edit files like wp-config.php . And you may not have sufficient permissions to upload and for WP to unzip a theme.
As per other answers, I use SFTP with a server of ec2-xx-xxx-xx-xx.compute-1.amazonaws.com username of ec2-user
ec2-107-20-192-98.compute-1.amazonaws.com:22 represents both the hostname and the ssh port. (SSH is normally on port 22, though it can run on any port.)
Try just ec2-107-20-192-98.compute-1.amazonaws.com in the hostname field.
I'm still skeptical of a webpage asking for a username and password. Seems a bit silly to me, since you should just use SFTP to directly upload whatever content you want using your SSH identity key instead of a password.
You could simply use 127.0.0.1 as hostname and check FTP in Wordpress ftp settings.
To resume what has been said:
user is the same you actually use to SSH/SFTP
password needs to be set/updated logging in via SSH and typing
sudo passwd your-user-name