function FileTransfer::findChroot

Same name in other branches
  1. 7.x includes/filetransfer/filetransfer.inc \FileTransfer::findChroot()
  2. 9 core/lib/Drupal/Core/FileTransfer/FileTransfer.php \Drupal\Core\FileTransfer\FileTransfer::findChroot()
  3. 8.9.x core/lib/Drupal/Core/FileTransfer/FileTransfer.php \Drupal\Core\FileTransfer\FileTransfer::findChroot()
  4. 11.x core/lib/Drupal/Core/FileTransfer/FileTransfer.php \Drupal\Core\FileTransfer\FileTransfer::findChroot()

Returns the chroot property for this connection.

It does this by moving up the tree until it finds itself

Return value

string|bool If successful, the chroot path for this connection, otherwise FALSE.

1 call to FileTransfer::findChroot()
FileTransfer::setChroot in core/lib/Drupal/Core/FileTransfer/FileTransfer.php
Sets the chroot and changes the jail to match the correct path scheme.

File

core/lib/Drupal/Core/FileTransfer/FileTransfer.php, line 405

Class

FileTransfer
Defines the base FileTransfer class.

Namespace

Drupal\Core\FileTransfer

Code

public function findChroot() {
    // If the file exists as is, there is no chroot.
    $path = __FILE__;
    $path = $this->fixRemotePath($path, FALSE);
    if ($this->isFile($path)) {
        return FALSE;
    }
    $path = __DIR__;
    $path = $this->fixRemotePath($path, FALSE);
    $parts = explode('/', $path);
    $chroot = '';
    while (count($parts)) {
        $check = implode('/', $parts);
        if ($this->isFile($check . '/' . \Drupal::service('file_system')->basename(__FILE__))) {
            // Remove the trailing slash.
            return substr($chroot, 0, -1);
        }
        $chroot .= array_shift($parts) . '/';
    }
    return FALSE;
}

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