function file_create_htaccess

Creates a .htaccess file in the given directory.

Parameters

$directory: The directory.

$private: FALSE indicates that $directory should be an open and public directory. The default is TRUE which indicates a private and protected directory.

$force_overwrite: Set to TRUE to attempt to overwrite the existing .htaccess file if one is already present. Defaults to FALSE.

Related topics

2 calls to file_create_htaccess()
file_ensure_htaccess in includes/file.inc
Creates a .htaccess file in each Drupal files directory if it is missing.
system_check_directory in modules/system/system.module
Checks the existence of the directory specified in $form_element.

File

includes/file.inc, line 486

Code

function file_create_htaccess($directory, $private = TRUE, $force_overwrite = FALSE) {
    if (file_uri_scheme($directory)) {
        $directory = file_stream_wrapper_uri_normalize($directory);
    }
    else {
        $directory = rtrim($directory, '/\\');
    }
    $htaccess_path = $directory . '/.htaccess';
    if (file_exists($htaccess_path) && !$force_overwrite) {
        // Short circuit if the .htaccess file already exists.
        return;
    }
    $htaccess_lines = file_htaccess_lines($private);
    // Write the .htaccess file.
    if (file_put_contents($htaccess_path, $htaccess_lines)) {
        drupal_chmod($htaccess_path, 0444);
    }
    else {
        $variables = array(
            '%directory' => $directory,
            '!htaccess' => '<br />' . nl2br(check_plain($htaccess_lines)),
        );
        watchdog('security', "Security warning: Couldn't write .htaccess file. Please create a .htaccess file in your %directory directory which contains the following lines: <code>!htaccess</code>", $variables, WATCHDOG_ERROR);
    }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.