From: Aaron Schulz Date: Wed, 21 Sep 2016 03:39:55 +0000 (-0700) Subject: Dependency inject $wgTmpDirectory into FileBackend classes X-Git-Tag: 1.31.0-rc.0~5405^2 X-Git-Url: https://git.cyclocoop.org/%27.WWW_URL.%27admin/?a=commitdiff_plain;h=c11e38e3db8ad6b86e8548501b10cdccdb67bdbd;p=lhc%2Fweb%2Fwiklou.git Dependency inject $wgTmpDirectory into FileBackend classes Change-Id: I219daffa67ff672bf5bd38921f4b1ca058d96b0f --- diff --git a/includes/filebackend/FSFileBackend.php b/includes/filebackend/FSFileBackend.php index b0e3eee78f..45951ecf22 100644 --- a/includes/filebackend/FSFileBackend.php +++ b/includes/filebackend/FSFileBackend.php @@ -195,7 +195,7 @@ class FSFileBackend extends FileBackendStore { } if ( !empty( $params['async'] ) ) { // deferred - $tempFile = TempFSFile::factory( 'create_', 'tmp' ); + $tempFile = TempFSFile::factory( 'create_', 'tmp', $this->tmpDirectory ); if ( !$tempFile ) { $status->fatal( 'backend-fail-create', $params['dst'] ); @@ -653,7 +653,7 @@ class FSFileBackend extends FileBackendStore { } else { // Create a new temporary file with the same extension... $ext = FileBackend::extensionFromPath( $src ); - $tmpFile = TempFSFile::factory( 'localcopy_', $ext ); + $tmpFile = TempFSFile::factory( 'localcopy_', $ext, $this->tmpDirectory ); if ( !$tmpFile ) { $tmpFiles[$src] = null; } else { diff --git a/includes/filebackend/FileBackendGroup.php b/includes/filebackend/FileBackendGroup.php index 0bae5ffea2..b560e94307 100644 --- a/includes/filebackend/FileBackendGroup.php +++ b/includes/filebackend/FileBackendGroup.php @@ -168,6 +168,7 @@ class FileBackendGroup { $config['wanCache'] = ObjectCache::getMainWANInstance(); $config['mimeCallback'] = [ $this, 'guessMimeInternal' ]; $config['statusWrapper'] = [ 'Status', 'wrap' ]; + $config['tmpDirectory'] = wfTempDir(); $this->backends[$name]['instance'] = new $class( $config ); } @@ -222,7 +223,7 @@ class FileBackendGroup { if ( !$type && $fsPath ) { $type = $magic->guessMimeType( $fsPath, false ); } elseif ( !$type && strlen( $content ) ) { - $tmpFile = TempFSFile::factory( 'mime_' ); + $tmpFile = TempFSFile::factory( 'mime_', '', wfTempDir() ); file_put_contents( $tmpFile->getPath(), $content ); $type = $magic->guessMimeType( $tmpFile->getPath(), false ); } diff --git a/includes/filebackend/MemoryFileBackend.php b/includes/filebackend/MemoryFileBackend.php index 74a0068fac..44fe2cbac6 100644 --- a/includes/filebackend/MemoryFileBackend.php +++ b/includes/filebackend/MemoryFileBackend.php @@ -169,7 +169,7 @@ class MemoryFileBackend extends FileBackendStore { } else { // Create a new temporary file with the same extension... $ext = FileBackend::extensionFromPath( $src ); - $fsFile = TempFSFile::factory( 'localcopy_', $ext ); + $fsFile = TempFSFile::factory( 'localcopy_', $ext, $this->tmpDirectory ); if ( $fsFile ) { $bytes = file_put_contents( $fsFile->getPath(), $this->files[$src]['data'] ); if ( $bytes !== strlen( $this->files[$src]['data'] ) ) { diff --git a/includes/filebackend/SwiftFileBackend.php b/includes/filebackend/SwiftFileBackend.php index a0027e4ff7..0a0e9f5a61 100644 --- a/includes/filebackend/SwiftFileBackend.php +++ b/includes/filebackend/SwiftFileBackend.php @@ -1127,7 +1127,7 @@ class SwiftFileBackend extends FileBackendStore { // Get source file extension $ext = FileBackend::extensionFromPath( $path ); // Create a new temporary file... - $tmpFile = TempFSFile::factory( 'localcopy_', $ext ); + $tmpFile = TempFSFile::factory( 'localcopy_', $ext, $this->tmpDirectory ); if ( $tmpFile ) { $handle = fopen( $tmpFile->getPath(), 'wb' ); if ( $handle ) { diff --git a/includes/filerepo/FSRepo.php b/includes/filerepo/FSRepo.php index b24354dc4d..d06acf27ba 100644 --- a/includes/filerepo/FSRepo.php +++ b/includes/filerepo/FSRepo.php @@ -66,6 +66,7 @@ class FSRepo extends FileRepo { "{$repoName}-deleted" => $deletedDir ], 'fileMode' => $fileMode, + 'tmpDirectory' => wfTempDir() ] ); // Update repo config to use this backend $info['backend'] = $backend; diff --git a/includes/libs/filebackend/FileBackend.php b/includes/libs/filebackend/FileBackend.php index 4ff342f929..1317b65a94 100644 --- a/includes/libs/filebackend/FileBackend.php +++ b/includes/libs/filebackend/FileBackend.php @@ -98,6 +98,9 @@ abstract class FileBackend { /** @var int How many operations can be done in parallel */ protected $concurrency; + /** @var string Temporary file directory */ + protected $tmpDirectory; + /** @var LockManager */ protected $lockManager; @@ -134,6 +137,8 @@ abstract class FileBackend { * - parallelize : When to do file operations in parallel (when possible). * Allowed values are "implicit", "explicit" and "off". * - concurrency : How many file operations can be done in parallel. + * - tmpDirectory : Directory to use for temporary files. If this is not set or null, + * then the backend will try to discover a usable temporary directory. * @throws FileBackendException */ public function __construct( array $config ) { @@ -160,6 +165,7 @@ abstract class FileBackend { ? (int)$config['concurrency'] : 50; $this->statusWrapper = isset( $config['statusWrapper'] ) ? $config['statusWrapper'] : null; + $this->tmpDirectory = isset( $config['tmpDirectory'] ) ? $config['tmpDirectory'] : null; } /**