mkdir() не работает при выполнении запроса на vapor без сервера, пока он работает в локальной среде

#laravel #mkdir #laravel-vapor

Вопрос:

Изображение прилагается для справки, на котором видно, что я нажал API на vapor, но MKDIR() не Laravel vapor, и он отлично работает на локальном.

img

 function uploadFile($file, $path, $filename){
        list($type, $data) = explode(';', $file);
        list(, $data) = explode(',', $data);
        $data = base64_decode($data);
        if (!File::exists($path)) {
            mkdir($path);
        }
        if (File::exists($path.'/'.$filename)) {
            File::delete($path.'/'.$filename);
        }

        file_put_contents($path.'/'.$filename, $data);

    }
 

Комментарии:

1. Вам нужно поделиться каким-то кодом

2. функция загрузки файла($файл, $путь, $имя файла){ список($тип, $данные) = разорвать(‘;’, $файл); список(, $данные) = разорвать(‘,’, $данные); $данные = base64_decode($данные); если (!Файл::существует($путь)) { mkdir($путь); } если (Файл::существует($путь.’/’.$имя файла)) { Файл::удалить($путь.’/’.$имя файла));} file_put_contents($путь.’/’.$имя файла, $данные);}

3. это моя функция, которая загружает файл

4. Можете ли вы отредактировать свой вопрос, вставить этот код в сам вопрос и немного отформатировать его. Трудно сказать, что здесь происходит. Однако общий комментарий заключается в том, что если вы используете бессерверную архитектуру, вам, вероятно, следует использовать другую файловую систему, такую как S3, для хранения файлов, потому что вы не можете полагаться на то, что ваши контейнеры или лямбды сохранят файлы, которые вы храните

5. Вы могли бы, но ваши файлы исчезнут, по-видимому, случайным образом при замене контейнеров и будут доступны не для всех контейнеров (я не утверждаю, что понимаю vapor, но я думаю, что это работает с использованием каких-то контейнеров или лямбд). Вы можете попробовать использовать 3-й параметр mkdir для рекурсивного создания каталогов, которые необходимо создать, например, с помощью mkdir($path, 0777, true) , но опять же, у вас возникнут проблемы с сохранением файлов, поэтому я предлагаю использовать S3 в качестве основного драйвера хранилища