Страница 1 из 1

mkdir(): No such file or directory в консоли

Добавлено: 2018.04.16, 20:01
an.viktory@gmail.com
при работе с web приложением никаких проблем но в консоли выскакивает вот такая ошибка я так понимаю что-то с путями нет так ?

Код: Выделить всё

yii\base\ErrorException' with message 'mkdir(): No such file or directory

Re: mkdir(): No such file or directory в консоли

Добавлено: 2018.04.16, 20:38
zelenin
an.viktory@gmail.com писал(а): 2018.04.16, 20:01я так понимаю что-то с путями нет так ?
это очевидно.
Серьезно, такой вопрос решили на форуме задать?

Re: mkdir(): No such file or directory в консоли

Добавлено: 2018.04.16, 20:56
an.viktory@gmail.com
почему тогда в приложении такой же скрипт работает без проблем

может консольное приложение не разрешает создавать директории или там не так пути прописаны. При просмотре конфигурационных файлов я не заметил чего то уникального.

Re: mkdir(): No such file or directory в консоли

Добавлено: 2018.04.16, 21:02
zelenin
an.viktory@gmail.com писал(а): 2018.04.16, 20:56 почему тогда в приложении такой же скрипт работает без проблем
значитусловия работы другие.

Re: mkdir(): No such file or directory в консоли

Добавлено: 2018.04.16, 21:03
an.viktory@gmail.com
какие условия и где ,на сервере или а приложении ?

Код: Выделить всё

 public function generatePathHtml()
    {
        //  echo "<br> LINK_ID = " . $this->link_id;
        $year = substr($this->link_id, 0, 4);
        //   echo "<br> YEAR = " . $year;
        $folder = substr($this->link_id, 4, 3);
        //   echo "<br> folder = " . $folder;
        if (!file_exists("source/html")) mkdir('source/html'); // else  echo "КАТАЛОГ  YEAR УЖЕ СУЩЕСТВУЕТ";
        if (!file_exists("source/html/" . $year)) mkdir("source/html/" . $year);  // else  echo "КАТАЛОГ  YEAR УЖЕ СУЩЕСТВУЕТ";
        if (!file_exists("source/html/" . $year . "/" . $folder)) mkdir("source/html/" . $year . "/" . $folder);  // else echo "КАТАЛОГ  YEAR-FOLDER УЖЕ СУЩЕСТВУЕТ";
        return "source/html/" . $year . "/" . $folder;

    }

Re: mkdir(): No such file or directory в консоли

Добавлено: 2018.04.16, 23:13
dmg
добавьте в начало скрипта echo __DIR__; - поможет

Re: mkdir(): No such file or directory в консоли

Добавлено: 2018.04.17, 09:52
an.viktory@gmail.com
он возвращает просто расположение файла на диске D::/.../models что вообще никак не связано с ресурсным файлами проекта, а с файловой системой моего компьютера

И так вопрос остается открытый почему mk_dir() консоли дает ошибку, как ему правильно сообщать пути при создании директории

Re: mkdir(): No such file or directory в консоли

Добавлено: 2018.04.17, 10:07
urichalex
an.viktory@gmail.com писал(а): 2018.04.17, 09:52 почему mk_dir() консоли дает ошибку
По тому, что нет родительской директории. Либо создать ее вручную, либо mkdir('/путь/до/папки', 755, true)

Re: mkdir(): No such file or directory в консоли

Добавлено: 2018.04.17, 10:13
an.viktory@gmail.com
Самое удивительное что она есть он ее не видит и соотсветственно исходя из скрипта пытается создать .... тут почему то именно в консоли пути не так прописываются

Re: mkdir(): No such file or directory в консоли

Добавлено: 2018.04.17, 10:23
an.viktory@gmail.com
проблема решилась создание такой абра-кадабры, но как правильно задавать пусти в консоли

Код: Выделить всё

 $year = substr($this->link_id, 0, 4);
        $root = __DIR__;
        $root = preg_replace("/models/",'web', $root);
       // echo "<br>__DIR_ = ".__DIR__;
        //   echo "<br> YEAR = " . $year;
        $folder = substr($this->link_id, 4, 3);
        //   echo "<br> folder = " . $folder;
        if (!file_exists($root. "/source/html")) mkdir($root."/source/html"); // else  echo "КАТАЛОГ  YEAR УЖЕ СУЩЕСТВУЕТ";
        if (!file_exists($root."/source/html/" . $year)) mkdir($root."/source/html/" . $year);  // else  echo "КАТАЛОГ  YEAR УЖЕ СУЩЕСТВУЕТ";
        if (!file_exists($root ."/source/html/" . $year . "/" . $folder)) mkdir($root."/source/html/" . $year . "/" . $folder);  // else echo "КАТАЛОГ  YEAR-FOLDER УЖЕ СУЩЕСТВУЕТ";
        return $root."/source/html/" . $year . "/" . $folder;

Re: mkdir(): No such file or directory в консоли

Добавлено: 2018.04.17, 10:30
someweb
Yii::getAlias('@app');

Re: mkdir(): No such file or directory в консоли

Добавлено: 2018.04.17, 10:50
an.viktory@gmail.com
т.е. @webroot в консоли нет а @app есть и исходя их него я могу строить пути ?

Re: mkdir(): No such file or directory в консоли

Добавлено: 2018.04.17, 12:18
Dominus
Создайте свой алиас:

Код: Выделить всё

Yii::setAlias('@upload', dirname(dirname(__DIR__)) . '/frontend/web/');
И используйте его.

Код: Выделить всё

Yii::getAlias('@upload');
Для Basic приложения, я создаю алиасы так:
В папке config создал файл bootstrap.php в котором и задаются алиасы
https://github.com/Dominus77/yii2-basic ... tstrap.php
И затем его подключаю в web/index.php и web/index-test.php:
https://github.com/Dominus77/yii2-basic ... dex.php#L9
https://github.com/Dominus77/yii2-basic ... st.php#L13
В файле yii для консольного приложения:
https://github.com/Dominus77/yii2-basic ... ev/yii#L16