function LocalStream::getLocalPath

Same name in other branches
  1. 9 core/lib/Drupal/Core/StreamWrapper/LocalStream.php \Drupal\Core\StreamWrapper\LocalStream::getLocalPath()
  2. 10 core/lib/Drupal/Core/StreamWrapper/LocalStream.php \Drupal\Core\StreamWrapper\LocalStream::getLocalPath()
  3. 11.x core/lib/Drupal/Core/StreamWrapper/LocalStream.php \Drupal\Core\StreamWrapper\LocalStream::getLocalPath()

Returns the canonical absolute path of the URI, if possible.

Parameters

string $uri: (optional) The stream wrapper URI to be converted to a canonical absolute path. This may point to a directory or another type of file.

Return value

string|bool If $uri is not set, returns the canonical absolute path of the URI previously set by the Drupal\Core\StreamWrapper\StreamWrapperInterface::setUri() function. If $uri is set and valid for this class, returns its canonical absolute path, as determined by the realpath() function. If $uri is set but not valid, returns FALSE.

9 calls to LocalStream::getLocalPath()
LocalStream::dir_opendir in core/lib/Drupal/Core/StreamWrapper/LocalStream.php
Support for opendir().
LocalStream::mkdir in core/lib/Drupal/Core/StreamWrapper/LocalStream.php
Support for mkdir().
LocalStream::realpath in core/lib/Drupal/Core/StreamWrapper/LocalStream.php
Returns canonical, absolute path of the resource.
LocalStream::rename in core/lib/Drupal/Core/StreamWrapper/LocalStream.php
Support for rename().
LocalStream::rmdir in core/lib/Drupal/Core/StreamWrapper/LocalStream.php
Support for rmdir().

... See full list

File

core/lib/Drupal/Core/StreamWrapper/LocalStream.php, line 120

Class

LocalStream
Defines a Drupal stream wrapper base class for local files.

Namespace

Drupal\Core\StreamWrapper

Code

protected function getLocalPath($uri = NULL) {
    if (!isset($uri)) {
        $uri = $this->uri;
    }
    $path = $this->getDirectoryPath() . '/' . $this->getTarget($uri);
    // In PHPUnit tests, the base path for local streams may be a virtual
    // filesystem stream wrapper URI, in which case this local stream acts like
    // a proxy. realpath() is not supported by vfsStream, because a virtual
    // file system does not have a real filepath.
    if (strpos($path, 'vfs://') === 0) {
        return $path;
    }
    $realpath = realpath($path);
    if (!$realpath) {
        // This file does not yet exist.
        $realpath = realpath(dirname($path)) . '/' . \Drupal::service('file_system')->basename($path);
    }
    $directory = realpath($this->getDirectoryPath());
    if (!$realpath || !$directory || strpos($realpath, $directory) !== 0) {
        return FALSE;
    }
    return $realpath;
}

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