netrox
@netrox

Как указать permissons при создании директории?

На удалённом сервере надо создать директорию и туда поместить файл . Подключаюсь по sftp и с помощью Storage::disk('sftp')->makeDirectory('path') создаю папку, но файл туда поместить не получается (накладывает 0744). Можно ли как-нибудь указать permissions при создании ?
  • Вопрос задан
  • 139 просмотров
Пригласить эксперта
Ответы на вопрос 1
Нет нельзя.

// vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php

/**
     * Create a directory.
     *
     * @param  string  $path
     * @return bool
     */
    public function makeDirectory($path)
    {
        return $this->driver->createDir($path);
    }


// vendor/league/flysystem/src/Adapter/Ftp.php:332
/**
     * @inheritdoc
     */
    public function createDir($dirname, Config $config)
    {
        $connection = $this->getConnection();
        $directories = explode('/', $dirname);

        foreach ($directories as $directory) {
            if (false === $this->createActualDirectory($directory, $connection)) {
                $this->setConnectionRoot();

                return false;
            }

            ftp_chdir($connection, $directory);
        }

        $this->setConnectionRoot();

        return ['type' => 'dir', 'path' => $dirname];
    }


P. S.: Вообще не для случая с фтп права задаются значением параметр 'visibility' у которого по умолчанию значение public:

// vendor/league/flysystem/src/Adapter/Local.php:34
/**
     * @var array
     */
    protected static $permissions = [
        'file' => [
            'public'  => 0644,
            'private' => 0600,
        ],
        'dir'  => [
            'public'  => 0755,
            'private' => 0700,
        ],
    ];

// vendor/league/flysystem/src/Adapter/Local.php:368

/**
     * @inheritdoc
     */
    public function createDir($dirname, Config $config)
    {
        $location = $this->applyPathPrefix($dirname);
        $umask = umask(0);
        $visibility = $config->get('visibility', 'public');

        if ( ! is_dir($location) && ! mkdir($location, $this->permissionMap['dir'][$visibility], true)) {
            $return = false;
        } else {
            $return = ['path' => $dirname, 'type' => 'dir'];
        }

        umask($umask);

        return $return;
    }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы