How do I set permissions on files/folders?

NOTE: While the following instructions talk about making files/folders writable, it is wise to review your security settings after installation to be sure you're not leaving yourself
open to hacking vulnerability by having too many "world-writable" files on your site.  There are detailed security recommendations in the FAQ and the Wiki.

How To Set File/Folder Permissions


Most FTP programs will allow you to change file permissions.

Connect to your site with your FTP program.
Move to your public_html directory, and perhaps into your "zencart" folder underneath public_html, if you've used a subfolder.

Then look for a "Properties" command that can be applied to that directory (often if you right click, Properties will be one of the options).
Then change the permissions to the needed setting for the following folders:
(If prompted whether to include files/folders underneath them (also called "recursive"), say or check "Yes")

All of these folders to "writable" (often this means 777, or maybe 755 if using suPHP: see footnote):
(Specifically, these need to be writable so that files can be uploaded to them, or created in them or written to them by PHP.)
  •  /cache
  •  /pub
  •  /images
  •  /includes/languages/english/html_includes
  •  /admin/backups
  •  /admin/images/graphs

These files to "read-only" (often 644 or 444):
  •  /includes/configure.php
  •  /admin/includes/configure.php

Using cPanel

In cPanel, you have File Manager.

Open File Manager, and browse to the folder where you have put your Zen Cart files, and make the changes to particular files/folders as needed.

Example: /includes/languages/english/html_includes

Browse down through
- includes
   - languages
      - english
         - html_includes

Click on html_includes.

Then you'll get another page, and likely in the top right corner there will be a "folder permissions" or "permissions" link. Click on that.
Then set the permissions to read, write, and execute for ALL categories of users (usually 9 checkboxes). If it has an option to process all files under this subdirectory, check that box.
Then click OK (or whatever button to process the changes).


Using SSH

If you have SSH access instead of cPanel, you could type the following commands:
1. chdir /home/myaccount/public_html/zencart
(substitute your actual working directory)

2. Type the following commands:
(uppercase R is important)
(If you're running suPHP, then 755 is appropriate, meaning you can probably skip the "777" lines since your folders are probably already 755:  see footnote)

chmod -R 777 ./cache
chmod -R 777 ./pub
chmod -R 777 ./images
chmod -R 777 ./includes/languages/english/html_includes
chmod -R 777 ./admin/backups
chmod -R 777 ./admin/images/graphs

chmod 444 ./includes/configure.php
chmod 444 ./admin/includes/configure.php


3. OPTIONAL: And this line changes all the files (not folders) and files within subfolders (but not the folders themselves) to be ideal for typical webserver use:

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


If these methods don't work, then you'll need to contact your hosting company for assistance in changing file permissions.

On a Windows Server:

1. Browse to the wwwroot folder (or whatever path your zen files are in.
2. Right-click on a particular file or folder (see list of folders and files above)
3. Choose properties
4. Choose the Security tab
5. Add "IUSR_xxxxxxx" and give read/write permissions to it.
6. OK, OK, OK
7. If you don't have a "security" tab in step 4 above, simply check the "read" and "write" boxes (or uncheck a read-only box if it exists).
8. Repeat for all required files/folders. Same list as for Linux/Unix servers earlier in this FAQ.

On a Windows PC (sometimes referred to as "localhost"):

Similar to Windows Server above:
1. Browse to the wwwroot folder (or whatever path your zen files are in.
2. Right-click on a particular file or folder (see list of folders and files above)
3. Choose properties
4. Set the read-only flag on or off depending on your requirements
5. Click Apply and/or OK.
6. Repeat for all required files/folders. Same list as for Linux/Unix servers earlier in this FAQ.


CONSIDERATIONS WHEN RUNNING suPHP or suExec ON YOUR SERVER:

If your host is running suPHP (occasionally also referred to as suexec), there are a couple variations on permissions issues which you must observe:
a) you will need to make sure that your files and folders are owned by your username and not root
b) you also need to make sure that any folder that has .php files in it is set to no higher than 755 and .php files are set to no higher than 644.
If either of these is not done, then you'll get "500 Internal Server Error" messages.

Thus, in suPHP mode, substitute "755" for all "777" suggestions mentioned above in relation to *folders*, and "644". Or, if your hosting company has an even stricter configuration,
then use the lower numbers specified by them.
  • 0 Users Found This Useful
Was this answer helpful?

Related Articles

How can I find out what version of Zen Cart or PHP or MySQL I'm using?

To find out what version of Zen Cart or PHP or MySQL you are currently using, you can simply go...

Getting a BLANK PAGE? Here's the answer ...

If you're getting a blank page when trying to browse to a certain page on your store, or after...

What's New in the Upcoming v2.0 release?

Database Abstraction Layer and Sql CacheThe abstraction layer has been re-factored to include a...

Image Preparation - How-to

I've seen several posts where people obviously aren't quite sure about the best way to set up...

Some tips to modify stylesheet

1. Download Web Developer extension for FireFox here2. Install & restart FireFox. You should...