The directory /sites/default/files/private does not exist

Submitted by admin on Thu, 06/22/2017 - 00:44

1) FILE SYSTEM Writable (public download method) The directory /sites/default/files/private does not exist. You may need to set the correct directory at the file system settings page or change the current directory's permissions so that it is writable.

2) PRIVATE FILES DIRECTORY Not fully protected

Both error above came from one problem..

The problem is wrongly setting on setting.php file for private file below

$settings['file_private_path'] = ''

The folder must be absolute..for example:

$settings['file_private_path'] = 'C:/xampp/htdocs/DRUPALSITENAME/sites/default/files/private';

* The above setting if drupal in localhost

If in live server..the setting should like this:

$settings['file_private_path'] = 'sites/default/files/private';

After that - clear the cache

NOTE: If we manually move site from life server to localhost - than we have to manually creata private file; file/private

For PRIVATE FILES DIRECTORY Not fully protected - need to add the following line to .htaccess

# Deny all requests from Apache 2.4+.
<IfModule mod_authz_core.c>
  Require all denied

# Deny all requests from Apache 2.0-2.2.
<IfModule !mod_authz_core.c>
  Deny from all
# Turn off all options we don't need.
Options -Indexes -ExecCGI -Includes -MultiViews

# Set the catch-all handler to prevent scripts from being executed.
SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
<Files *>
  # Override the handler again if we're run later in the evaluation list.
  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003

# If we know how to do it safely, disable the PHP engine entirely.
<IfModule mod_php5.c>
  php_flag engine off