php- Выходной каталог не существует - PullRequest
0 голосов
/ 11 марта 2019

Я пытаюсь сохранить новый файл в моем исходном каталоге в моем проекте Symfony, но все, что я пробовал, выдает:

Выходной каталог не существует

Как яЯ уверен, что путь существует, хотите создать файл .txt в нем!

$path = "/var/www/app/web/uploads/my-file.txt";
$file = basename($path);

$txt = new File();
$txt->setSavePath($file);
$txt->save();

и:

public function setSavePath($savePath)
{
    if (!is_dir($savePath)) {
        throw \Exception("Output directory does not exist");
    }

    // Add trailing directory separator the save path
    if (substr($savePath, -1) != DIRECTORY_SEPARATOR) {
        $savePath .= DIRECTORY_SEPARATOR;
    }

    $this->savePath = $savePath;
}

Ответы [ 2 ]

2 голосов
/ 11 марта 2019

Используйте dirname вместо basename.

Потому что

$path = "/var/www/app/web/uploads/my-file.txt";
$file = basename($path);
// $file is `my-file.txt` and not the path `/var/www/app/web/uploads` you expect
0 голосов
/ 11 марта 2019

Вы проверяете, является ли $ savePath каталогом is_dir, вы передаете путь к файлу, из-за чего выдается исключение.

Вы должны проверить, является ли $ savePath каталогом, доступным для записи.

public function setSavePath($savePath)
{
    if (!is_writable(dirname($savePath))) {
        throw \Exception("Output directory does not exist or not writable.");
    }

   //... rest of code.
}

ref: http://php.net/is_dir
ref: http://php.net/is_writable

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...