public Updater::prepareInstallDirectory(&$filetransfer, $directory)
Makes sure the installation parent directory exists and is writable.
Parameters
\Drupal\Core\FileTransfer\FileTransfer $filetransfer: Object which is a child of FileTransfer.
string $directory: The installation directory to prepare.
Throws
\Drupal\Core\Updater\UpdaterException
File
- core/lib/Drupal/Core/Updater/Updater.php, line 304
Class
- Updater
- Defines the base class for Updaters used in Drupal.
Namespace
Drupal\Core\Updater
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | public function prepareInstallDirectory(& $filetransfer , $directory ) { // Make the parent dir writable if need be and create the dir. if (! is_dir ( $directory )) { $parent_dir = dirname( $directory ); if (! is_writable ( $parent_dir )) { @ chmod ( $parent_dir , 0755); // It is expected that this will fail if the directory is owned by the // FTP user. If the FTP user == web server, it will succeed. try { $filetransfer ->createDirectory( $directory ); $this ->makeWorldReadable( $filetransfer , $directory ); } catch (FileTransferException $e ) { // Probably still not writable. Try to chmod and do it again. // @todo Make a new exception class so we can catch it differently. try { $old_perms = substr (sprintf( '%o' , fileperms ( $parent_dir )), -4); $filetransfer -> chmod ( $parent_dir , 0755); $filetransfer ->createDirectory( $directory ); $this ->makeWorldReadable( $filetransfer , $directory ); // Put the permissions back. $filetransfer -> chmod ( $parent_dir , intval ( $old_perms , 8)); } catch (FileTransferException $e ) { $message = t( $e ->getMessage(), $e ->arguments); $throw_message = t( 'Unable to create %directory due to the following: %reason' , array ( '%directory' => $directory , '%reason' => $message )); throw new UpdaterException( $throw_message ); } } // Put the parent directory back. @ chmod ( $parent_dir , 0555); } } } |
Please login to continue.