Drupal 6.x with small modification can also be used on servers with Safe Mode ON (safe_mode=1
). Standard distribution of Drupal doesn't support Safe Mode out of the box. Joomla has support already build-in. Safe Mode ON can be bypassed with FTP directory functions.
Add following function to includes/file.inc
:
function mkdir_ftp($directory) { $directory = "your_drupal_ftp_base_folder/" . $directory; $ftpConn = ftp_connect("ftp.your.domain"); if(false == ftp_login($ftpConn, "your_login", "your_password")) { watchdog('file system', 'The directory cannot be created, ftp_login() failed.', array(), WATCHDOG_ERROR); return FALSE; } if(false == ftp_mkdir($ftpConn, $directory)) { watchdog('file system', 'The directory %directory cannot be created, ftp_mkdir() failed.', array('%directory' => $directory), WATCHDOG_ERROR); return FALSE; } if(false == ftp_chmod($ftpConn, 0777, $directory)) { watchdog('file system', 'The directory %directory cannot be created, ftp_chmod() failed.', array('%directory' => $directory), WATCHDOG_ERROR); return FALSE; } ftp_close($ftpConn); return TRUE; }
and call it instead of PHP mkdir()
in the same file, in function file_check_directory()
:
function file_check_directory(&$directory, $mode = 0, $form_item = NULL) { $directory = rtrim($directory, '/\\'); // Check if directory exists. if (!is_dir($directory)) { if (($mode & FILE_CREATE_DIRECTORY) && @mkdir_ftp($directory)) { drupal_set_message(t('The directory %directory has been created.', array('%directory' => $directory))); @chmod($directory, 0775); // Necessary for non-webserver users. } ...