Я использую пакет spatie/laravel-image-optimizer
для оптимизации своих изображений.
Я получаю сообщение об ошибке:
storage/app/public/files/car/9/km_declaration/2022/uE5DMCYh6hCuQXrOZ4yOSLCtLEnNdsE9e9OriNVw.jpg does not exist
Хотя файл есть, и он может получить к нему доступ локально, в производстве он не может его найти.
Я использую оптимизатор, как предполагалось, и я использую общедоступную файловую систему:
ImageOptimizer::optimize($this->url);
У вас есть предположения, почему он работает локально с усадьбой, но не на производстве?
(Права доступа к папке 755 на продукте)
Обновлять:
Код: ImageOptimizer::optimize($this->url);
запускается из задания cron.
Если я делаю file_exists($url)
из контроллера, я получаю true, но false из задания. Я думаю, что это источник моей проблемы.
дело в том, что файл существует в этом месте, просто код не может его найти
Можете ли вы добавить к вашему вопросу дамп значения $this->url
в локальной и в производственной среде?
@ N69S То же самое. Теперь я мог бы исследовать, что file_exists($url) возвращает true на контроллере, но false из задания cron, используя тот же URL-адрес. У вас есть идеи для этого?
было бы быстрее показать в качестве примера значение. поскольку ошибка возникает из-за разницы в среде, я предлагаю вам либо выполнить "cd path/of/project" в качестве первой инструкции cron перед "schedule:run", либо использовать в своем коде вспомогательную функцию "base_path()". " вот так ImageOptimizer::optimize(base_path($this->url));
В папке хранилища нужно выставить права 775 chmod -R 775 хранилище
Я изменил разрешение, но все та же ошибка :(
На самом деле мне нужно было сделать две вещи: сначала изменить разрешение, как предлагается в этом ответе, а также мне нужно было добавить public_path, когда я вызывал оптимизатор: «ImageOptimizer::optimize(public_path().$this->url);’
если файл не существует, чем мы можем вам помочь? Вы можете подтвердить отсутствие файла, инкапсулировав эту строку с помощью
if (file_exists($this->url)) {
. Что касается разрешения на папку, кто является владельцем папки, чтобы вы использовали 755 вместо 775.