Страница 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
это очевидно.
Серьезно, такой вопрос решили на форуме задать?
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
По тому, что нет родительской директории. Либо создать ее вручную, либо 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/');
И используйте его.
Для 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