Skip to content

Why is my site getting a 403 error?

A 403 Forbidden means the web server found your file but refused to serve it. On our cPanel servers that’s nearly always one of two things: permissions that are wrong, or files owned by the wrong user.

We run suEXEC, which makes your site’s code run as your account rather than a shared web-server user. That’s a security benefit — one account can’t read another’s files — but it does mean the server is strict about ownership and permissions.

ItemPermissions
Folders755
Files644

Anything more permissive (a folder at 777, a file at 666) is refused by suEXEC. This surprises people, because loosening permissions is the instinctive fix for a permissions error — here it makes things worse, and it’s a genuine security risk.

The File Manager handles this without needing a terminal:

  1. Sign in to cPanel and open File Manager.

  2. Navigate to the site’s folder. For your primary domain that’s normally public_html.

  3. Select the folder or file, then click Permissions in the toolbar.

  4. Set folders to 755 and files to 644. To apply to everything beneath a folder at once, tick the recurse into subdirectories option and choose whether it applies to files or folders — you’ll need one pass for each, since they take different values.

Permissions are only half of it. Files also have to be owned by your account.

  • Uploaded over FTP or SFTP? Ownership is almost certainly fine — the files were created as you.
  • Pulled the site down over SSH with git clone, wget, curl, or unpacked an archive as another user? Ownership may be wrong, and no amount of chmod will fix that. The files need chown back to your account.

If you suspect ownership, open a ticket — it’s a one-command fix from our side and safer than guessing.

If permissions and ownership are both correct

Section titled “If permissions and ownership are both correct”

Other causes of a 403:

  • No index file. A folder with no index.html or index.php, on a server with directory listing disabled, returns 403.
  • An .htaccess rule denying access — either one you added, or one a security plugin wrote.
  • A security plugin or firewall blocking your IP after failed logins. Try from a different network or your phone on mobile data; if that works, it’s an IP block.

Still stuck? Open a support ticket and our team will help.