создание изображения внутри папки приводит к созданию изображения с именем folder/image.jpg

У меня есть этот кусок кода:

    $file = $faker->image($dir = public_path().'/tmp', $width = 800, $height = 600, '', true);
    $hash = str_random(7);
    $thumbnailName = $hash . '.jpg';
    $thumbnailImage = ImgResizer::make($file)->fit(180, 180);
    $thumbnailImage->save( public_path() . '\\thumb\\'. $thumbnailName);
    rename($file, 'public/'.$hash.'.jpg');

Как видите, я использую faker для заполнения базы данных. Faker также поддерживает изображения и получает изображения с сайта lorempixel.com. Я сохраняю это изображение прямо в общей папке, и это работает. Я также создаю эскиз изображения с помощью InternventionImage и сохраняю его в папку public/thumb, как вы можете видеть в коде.

Когда я запускаю db:seed, ошибок не возникает, все прошло хорошо. Однако, когда я заглянул в папку большого пальца, там не было файлов. В общей папке была создана куча изображений, но не внутри большого пальца. Я вошел на сервер и перешел в папку по умолчанию, набрал ls и получил следующий вывод:

Как вы можете видеть на изображении, там есть куча public/thumb/hashcode.jpg изображений. Как это возможно, их нет в папке большого пальца, почему они там перечислены? Вместо этого сценарий создал файл с именем файла public/thumb/hashcode.jpg? Как мне поместить их в папку thumb? Этот код работает на моей локальной машине Windows 10 под apache2 и php7.


person niko craft    schedule 28.08.2016    source источник
comment
Проблема в том, что следующий код public_path() . '\\большой палец\\'. $thumbnailName создает изображения в public_path() с именем '\\thumb\\'. $thumbnailName. Используйте public_path() . '/большой палец/'. $thumbnailName, чтобы сохранить их внутри большого пальца.   -  person Andrej Ludinovskov    schedule 28.08.2016
comment
спасибо, так и сделал   -  person niko craft    schedule 28.08.2016


Ответы (1)


Попробуйте изменить это:

public_path() . '\\thumb\\'. $thumbnailName

К этому:

public_path().DIRECTORY_SEPARATOR.'thumb'.DIRECTORY_SEPARATOR.$thumbnailName

Также создайте каталог thumb и установите правильные разрешения:

chmod -R 755 /public/thumb
person Alexey Mezenin    schedule 28.08.2016
comment
Я закончил с использованием public_path() . '/большой палец/'. $thumbnailName, предложенный Андреем выше. Однако ваш ответ также работает, поэтому я приму его как ответ на вопрос. - person niko craft; 28.08.2016