0

I'm getting the following error on my local machine after installing EE...

An Error Was Encountered

The following directory must be writable: /Applications/MAMP/htdocs/website.local/library/expressionengine/cache

Using MAMP Pro and set all permissions to 777 to all directories, but still no luck. Any help is appreciated. Thanks

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

/*
|--------------------------------------------------------------------------
| ExpressionEngine Config Items
|--------------------------------------------------------------------------
|
| The following items are for use with ExpressionEngine.  The rest of
| the config items are for use with CodeIgniter, some of which are not
| observed by ExpressionEngine, e.g. 'permitted_uri_chars'
|
*/

$docroot = $_SERVER['DOCUMENT_ROOT'];
$address = ($_SERVER['SERVER_PORT'] == '443') ? 'https://'.$_SERVER['HTTP_HOST'] : 'http://'.$_SERVER['HTTP_HOST'];

$config['app_version'] = "273";
$config['install_lock'] = "y";
$config['license_number'] = "0000-0000-0000-0000";
$config['debug'] = "0";
$config['site_index'] = 'index.php';
$config['site_url'] = $address.'/';
$config['cp_url'] = $address."/manage.php";
$config['doc_url'] = "http://mywebsite.com/";
$config['theme_folder_url'] = $address."/themes/";
$config['theme_folder_path'] = $docroot.'/themes/';
$config['cp_theme'] = 'mcsquared';
$config['new_version_check'] = 'n';
$config['is_system_on'] = "y";
//$config['site_label'] = ''; // if you want to force the site_name
$config['cookie_prefix'] = 'website';

$config['enable_online_user_tracking'] = "n";
$config['enable_hit_tracking'] = "n";
$config['enable_entry_view_tracking'] = "n";
$config['dynamic_tracking_disabling'] = "";
$config['comment_word_censoring'] = "n";
$config['comment_moderation_override'] = "n";
$config['comment_edit_time_limit'] = "";
$config['allow_extensions'] = "y";

$config['tmpl_file_basepath'] = $docroot.'/views/templates/';

$config['template_debugging'] = 'n';

$config['snippet_file_basepath'] = $docroot.'/views/snippets/';
$config['snippets_sync_prefix'] = 'snippet:';


$config['ce_image_document_root'] = $docroot;
/*
|-----------------------------
| CE Image Basic Config Items
|-----------------------------
|
| The following items are for use with CE Image. They are all optional,
| as the defaults in the actual plugin will be used if not specified below.
*/
/*
| The *relative path* (to your web root) of the directory to cache images
| in. This path will override the $cache_dir variable in the plugin file,
| and can optionally be overridden via the cache_dir= plugin parameter.
*/
$config['ce_image_cache_dir'] = '/cache/';

/*
| The *relative path* (to your web root) of the folder to download remote
| images. This path will override the $remote_dir variable in the plugin
| file, and can optionally be overridden via the remote_dir= plugin
| parameter.
*/
$config['ce_image_remote_dir'] = '/cache/remote/';

/*
| The ce_image_memory_limit sets the amount of memory (in megabytes) PHP can
| use for the script (64 is generally sufficient). If the PHP memory_limit
| is set to a greater value, then this setting will not override it.
*/
$config['ce_image_memory_limit'] = 64;

/*
| If the plugin cannot determine the last change date of a remote image,
| wait this long (in minutes) before re-downloading the image:
*/
$config['ce_image_remote_cache_time'] = 1440;

/*
| The default quality to save a jpg/jpeg file. The quality can range from
| 0 (lowest) to 100 (highest) and should be a whole number.
*/
$config['ce_image_quality'] = 80;

/*
| You can optionally run images that are downloaded from remote sites
| through an XSS filter. The filter sometimes gives false negatives though.
| If you know and trust the source of your images, you can disable the
| filter by default. You can always override this per tag via the
| disable_xss_check= parameter.
*/
$config['ce_image_disable_xss_check'] = 'yes';

/*
| By default, CE Image will add in width and height attributes to the image
| tags it generates when using the ce_img:single tag. If you would like to
| disable this globally, you can use this setting. You can also change this
| on a per tag basis using the add_dims= parameter. The default is "yes".
*/
$config['ce_image_add_dims'] = 'no';


// file upload preferences
if ( !empty($docroot) )
{
    // Note: FCPATH is defined in index.php and manage.php -- where the app and view are init.
    $uploadpath = 'public/uploads';

    $config['upload_preferences'] = array(
        1 => array( # database id number
            'name'        => 'Default Directory', # display name in control panel
            'server_path' => FCPATH.$uploadpath.'/', # server path
            'url'         => '/'.$uploadpath.'/', # url path
            'allowed_types'=> 'all'
        ),
        2 => array( # database id number
            'name'        => 'Page Headers', # display name in control panel
            'server_path' => FCPATH.$uploadpath.'/pageheaders/', # server path
            'url'         => '/'.$uploadpath.'/pageheaders/', # url path
            'allowed_types'=> 'img'
        )
    );
}

/*
|--------------------------------------------------------------------------
| Base Site URL
|--------------------------------------------------------------------------
|
| URL to your CodeIgniter root. Typically this will be your base URL,
| WITH a trailing slash:
|
|   http://example.com/
|
*/
$config['base_url'] = '';

/*
|--------------------------------------------------------------------------
| Index File
|--------------------------------------------------------------------------
|
| Typically this will be your index.php file, unless you've renamed it to
| something else. If you are using mod_rewrite to remove the page set this
| variable so that it is blank.
|
*/
$config['index_page'] = "";

/*
|--------------------------------------------------------------------------
| URI PROTOCOL
|--------------------------------------------------------------------------
|
| This item determines which server global should be used to retrieve the
| URI string.  The default setting of "AUTO" works for most servers.
| If your links do not seem to work, try one of the other delicious flavors:
|
| 'AUTO'            Default - auto detects
| 'PATH_INFO'       Uses the PATH_INFO
| 'QUERY_STRING'    Uses the QUERY_STRING
| 'REQUEST_URI'     Uses the REQUEST_URI
| 'ORIG_PATH_INFO'  Uses the ORIG_PATH_INFO
|
*/
$config['uri_protocol'] = 'AUTO';

/*
|--------------------------------------------------------------------------
| URL suffix
|--------------------------------------------------------------------------
|
| This option allows you to add a suffix to all URLs generated by CodeIgniter.
| For more information please see the user guide:
|
| http://codeigniter.com/user_guide/general/urls.html
*/

$config['url_suffix'] = '';

/*
|--------------------------------------------------------------------------
| Default Language
|--------------------------------------------------------------------------
|
| This determines which set of language files should be used. Make sure
| there is an available translation if you intend to use something other
| than english.
|
*/
$config['language'] = 'english';

/*
|--------------------------------------------------------------------------
| Default Character Set
|--------------------------------------------------------------------------
|
| This determines which character set is used by default in various methods
| that require a character set to be provided.
|
*/
$config['charset'] = 'UTF-8';

/*
|--------------------------------------------------------------------------
| Enable/Disable System Hooks
|--------------------------------------------------------------------------
|
| If you would like to use the "hooks" feature you must enable it by
| setting this variable to TRUE (boolean).  See the user guide for details.
|
*/
$config['enable_hooks'] = FALSE;


/*
|--------------------------------------------------------------------------
| Class Extension Prefix
|--------------------------------------------------------------------------
|
| This item allows you to set the filename/classname prefix when extending
| native libraries.  For more information please see the user guide:
|
| http://codeigniter.com/user_guide/general/core_classes.html
| http://codeigniter.com/user_guide/general/creating_libraries.html
|
*/
$config['subclass_prefix'] = 'EE_';


/*
|--------------------------------------------------------------------------
| Allowed URL Characters
|--------------------------------------------------------------------------
|
| This lets you specify which characters are permitted within your URLs.
| When someone tries to submit a URL with disallowed characters they will
| get a warning message.
|
| As a security measure you are STRONGLY encouraged to restrict URLs to
| as few characters as possible.  By default only these are allowed: a-z 0-9~%.:_-
|
| Leave blank to allow all characters -- but only if you are insane.
|
| DO NOT CHANGE THIS UNLESS YOU FULLY UNDERSTAND THE REPERCUSSIONS!!
|
*/
$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\\-';


/*
|--------------------------------------------------------------------------
| Enable Query Strings
|--------------------------------------------------------------------------
|
| By default CodeIgniter uses search-engine friendly segment based URLs:
| example.com/who/what/where/
|
| You can optionally enable standard query string based URLs:
| example.com?who=me&what=something&where=here
|
| Options are: TRUE or FALSE (boolean)
|
| The two other items let you set the query string "words" that will
| invoke your controllers and its functions:
| example.com/index.php?c=controller&m=function
|
| Please note that some of the helpers won't work as expected when
| this feature is enabled, since CodeIgniter is designed primarily to
| use segment based URLs.
|
*/
$config['enable_query_strings'] = FALSE;
$config['directory_trigger'] = 'D';
$config['controller_trigger'] = 'C';
$config['function_trigger'] = 'M';

/*
|--------------------------------------------------------------------------
| Error Logging Threshold
|--------------------------------------------------------------------------
|
| If you have enabled error logging, you can set an error threshold to 
| determine what gets logged. Threshold options are:
|
|   0 = Disables logging, Error logging TURNED OFF
|   1 = Error Messages (including PHP errors)
|   2 = Debug Messages
|   3 = Informational Messages
|   4 = All Messages
|
| For a live site you'll usually only enable Errors (1) to be logged otherwise
| your log files will fill up very fast.
|
*/
$config['log_threshold'] = 0;

/*
|--------------------------------------------------------------------------
| Error Logging Directory Path
|--------------------------------------------------------------------------
|
| Leave this BLANK unless you would like to set something other than the default
| system/logs/ folder.  Use a full server path with trailing slash.
|
*/
$config['log_path'] = '';

/*
|--------------------------------------------------------------------------
| Date Format for Logs
|--------------------------------------------------------------------------
|
| Each item that is logged has an associated date. You can use PHP date
| codes to set your own date formatting
|
*/
$config['log_date_format'] = 'Y-m-d H:i:s';

/*
|--------------------------------------------------------------------------
| Cache Directory Path
|--------------------------------------------------------------------------
|
| Leave this BLANK unless you would like to set something other than the default
| system/cache/ folder.  Use a full server path with trailing slash.
|
*/
$config['cache_path'] = '';

/*
|--------------------------------------------------------------------------
| Encryption Key
|--------------------------------------------------------------------------
|
| If you use the Encryption class or the Sessions class with encryption
| enabled you MUST set an encryption key.  See the user guide for info.
|
*/
$config['encryption_key'] = '';

/*
|--------------------------------------------------------------------------
| Global XSS Filtering
|--------------------------------------------------------------------------
|
| Determines whether the XSS filter is always active when GET, POST or
| COOKIE data is encountered
|
*/
$config['global_xss_filtering'] = FALSE;


/*
|--------------------------------------------------------------------------
| CSRF Protection
|--------------------------------------------------------------------------
|
| Determines whether Cross Site Request Forgery protection is enabled.
| For more info visit the security library page of the user guide
|
*/
$config['csrf_protection'] = FALSE;

/*
|--------------------------------------------------------------------------
| Output Compression
|--------------------------------------------------------------------------
|
| Enables Gzip output compression for faster page loads.  When enabled,
| the output class will test whether your server supports Gzip.
| Even if it does, however, not all browsers support compression
| so enable only if you are reasonably sure your visitors can handle it.
|
| VERY IMPORTANT:  If you are getting a blank page when compression is enabled it
| means you are prematurely outputting something to your browser. It could
| even be a line of whitespace at the end of one of your scripts.  For
| compression to work, nothing can be sent before the output buffer is called
| by the output class.  Do not "echo" any values with compression enabled.
|
*/
$config['compress_output'] = FALSE;

/*
|--------------------------------------------------------------------------
| Master Time Reference
|--------------------------------------------------------------------------
|
| Options are "local" or "gmt".  This pref tells the system whether to use
| your server's local time as the master "now" reference, or convert it to
| GMT.  See the "date helper" page of the user guide for information
| regarding date handling.
|
*/
$config['time_reference'] = 'local';


/*
|--------------------------------------------------------------------------
| Rewrite PHP Short Tags
|--------------------------------------------------------------------------
|
| If your PHP installation does not have short tag support enabled CI
| can rewrite the tags on-the-fly, enabling you to utilize that syntax
| in your view files.  Options are TRUE or FALSE (boolean)
|
*/
$config['rewrite_short_tags'] = TRUE;


/*
|--------------------------------------------------------------------------
| Reverse Proxy IPs
|--------------------------------------------------------------------------
|
| If your server is behind a reverse proxy, you must whitelist the proxy IP
| addresses from which CodeIgniter should trust the HTTP_X_FORWARDED_FOR
| header in order to properly identify the visitor's IP address.
| Comma-delimited, e.g. '10.0.1.200,10.0.1.201'
|
*/
$config['proxy_ips'] = "";


/* End of file config.php */
/* Location: ./system/expressionengine/config/config.php */
1

If a chmod 777 won't fix it, it could be a directory/file ownership issue.

First try letting OSX fix it. Open up Disk Utility app on your Mac, click on your primary partition (under your primary drive) and click "Repair Permissions".

If that doesn't work, you'll need to do a little homework to figure out the correct folder/file ownership permissions for your MAMP folder.

1) Open Terminal

2) cd into /Applications/MAMP/htdocs/website.local/ via:

cd /Applications/MAMP/htdocs/website.local/

3) enter:

ls -la

4) observe the owner and group names which might look like this:

drwxrwxr-x  2 jarrett  staff   102 Mar 19  2014 library
drwxrwxr-x  2 jarrett  staff   102 Mar 19  241  themes
etc...

5) looking at the example above, jarrett would be the owner, staff would be the group

6) Now let's do a chown command to recursively update the directories and files within

chown -Rv root:admin /Applications/MAMP/htdocs/website.local/

or assuming you're already cd'd into the website.local directory, you can just do

chown -Rv root:admin .   (make sure to include that period)

6b) Alternatively, you can do a CMD + i and scroll to the bottom to view and update ownership as well. I usually trust chown more though. Using "Apply to enclosed items" should recursively perform the ownership update.

0
0

Can you confirm that is indeed the correct path to your cache folder?

Mine for example

/Users/username/Sites/sitename/system_folder/expressionengine/cache

1
  • Justin, it's the same path. I added my config file above. Maybe it's something there?
    – frshjb373
    Nov 20 '14 at 23:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.