Only use realpath for real directories (#26060)

In some cross-local-storage use cases, the Local storage is
instantiated with "/" as data directory. In such cases, calling
realpath() would cause PHP warnings when open_basedir is set.

This fix bypasses the realpath() call when dealing with a root storage.

Downstreaming of https://github.com/owncloud/core/pull/26060

Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
This commit is contained in:
Vincent Petry 2016-09-08 15:14:20 +02:00 committed by Lukas Reschke
parent e0dd6768be
commit 7535d3e391
No known key found for this signature in database
GPG Key ID: B9F6980CF6E759B1
1 changed files with 6 additions and 1 deletions

View File

@ -54,7 +54,12 @@ class Local extends \OC\Files\Storage\Common {
throw new \InvalidArgumentException('No data directory set for local storage');
}
$this->datadir = $arguments['datadir'];
$this->realDataDir = rtrim(realpath($this->datadir), '/') . '/';
// some crazy code uses a local storage on root...
if ($this->datadir === '/') {
$this->realDataDir = $this->datadir;
} else {
$this->realDataDir = rtrim(realpath($this->datadir), '/') . '/';
}
if (substr($this->datadir, -1) !== '/') {
$this->datadir .= '/';
}