Skip to content

Error occure in while saving the uploaded image using Spatie/laravel-medialibrary #434

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
oussamanm opened this issue Jan 30, 2025 · 1 comment

Comments

@oussamanm
Copy link

Error Occure when saving Model that has media :

the upload of the file work fine it placed the file first in Srotage/uploads then it get copy to public/media, but i still get error :

ErrorException: fopen(/www/wwwroot/myproject/storage/uploads/D14JIBqPtuEiuJ2WqwPyf6jg0cCn4kCTHaf6zDrz.png): Failed to open stream: No such file or directory in file /www/wwwroot/myproject/vendor/spatie/laravel-medialibrary/src/MediaCollections/Filesystem.php on line 139

The Error Occure exactly in saving Model, i findout that even with the error everything saved correctly the model with its media

After debuging i find out that the problem maybe because the proccess of saving media runned twice :

  • the first time the media placed in Storage/upload using Component/Dropzone , then after saving the media get copy to /public/media/
  • and when the second running happen it couldn't find the file uploaded in /Storage/upload that's why the problem of fopen occure.

Everything was working fine before, the error occure suddenly

`ErrorException: fopen(/www/wwwroot/myproject/storage/uploads/D14JIBqPtuEiuJ2WqwPyf6jg0cCn4kCTHaf6zDrz.png): Failed to open stream: No such file or directory in file /www/wwwroot/myproject/vendor/spatie/laravel-medialibrary/src/MediaCollections/Filesystem.php on line 139

#0 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(270): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError()
#1 [internal function]: Illuminate\Foundation\Bootstrap\HandleExceptions->Illuminate\Foundation\Bootstrap{closure}()
#2 /www/wwwroot/myproject/vendor/spatie/laravel-medialibrary/src/MediaCollections/Filesystem.php(139): fopen()
#3 /www/wwwroot/myproject/vendor/spatie/laravel-medialibrary/src/MediaCollections/Filesystem.php(30): Spatie\MediaLibrary\MediaCollections\Filesystem->copyToMediaLibrary()
#4 /www/wwwroot/myproject/vendor/spatie/laravel-medialibrary/src/MediaCollections/FileAdder.php(445): Spatie\MediaLibrary\MediaCollections\Filesystem->add()
#5 /www/wwwroot/myproject/vendor/spatie/laravel-medialibrary/src/MediaCollections/FileAdder.php(420): Spatie\MediaLibrary\MediaCollections\FileAdder->processMediaItem()
#6 /www/wwwroot/myproject/vendor/spatie/laravel-medialibrary/src/InteractsWithMedia.php(564): Spatie\MediaLibrary\MediaCollections\FileAdder->Spatie\MediaLibrary\MediaCollections{closure}()
#7 /www/wwwroot/myproject/vendor/spatie/laravel-medialibrary/src/MediaCollections/FileAdder.php(419): App\Models\Product->processUnattachedMedia()
#8 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php(421): Spatie\MediaLibrary\MediaCollections\FileAdder->Spatie\MediaLibrary\MediaCollections{closure}()
#9 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php(249): Illuminate\Events\Dispatcher->Illuminate\Events{closure}()
#10 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasEvents.php(188): Illuminate\Events\Dispatcher->dispatch()
#11 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1316): Illuminate\Database\Eloquent\Model->fireModelEvent()
#12 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1138): Illuminate\Database\Eloquent\Model->performInsert()
#13 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(986): Illuminate\Database\Eloquent\Model->save()
#14 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Support/helpers.php(306): Illuminate\Database\Eloquent\Builder->Illuminate\Database\Eloquent{closure}()
#15 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(985): tap()
#16 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php(23): Illuminate\Database\Eloquent\Builder->create()
#17 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(2330): Illuminate\Database\Eloquent\Model->forwardCallTo()
#18 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(2342): Illuminate\Database\Eloquent\Model->__call()
#19 /www/wwwroot/myproject/app/Http/Controllers/CraftablePro/ProductController.php(176): Illuminate\Database\Eloquent\Model::__callStatic()
#20 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): App\Http\Controllers\CraftablePro\ProductController->store()
#21 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(43): Illuminate\Routing\Controller->callAction()
#22 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Routing/Route.php(259): Illuminate\Routing\ControllerDispatcher->dispatch()
#23 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Routing/Route.php(205): Illuminate\Routing\Route->runController()
#24 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Routing/Router.php(798): Illuminate\Routing\Route->run()
#25 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\Routing\Router->Illuminate\Routing{closure}()
#26 /www/wwwroot/myproject/vendor/inertiajs/inertia-laravel/src/Middleware.php(87): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}()
#27 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Inertia\Middleware->handle()
#28 /www/wwwroot/myproject/vendor/brackets/craftable-pro/src/Http/Middleware/EnsureEmailIsVerified.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}()
#29 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Brackets\CraftablePro\Http\Middleware\EnsureEmailIsVerified->handle()
#30 /www/wwwroot/myproject/vendor/brackets/craftable-pro/src/Http/Middleware/TrackLastActive.php(22): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}()
#31 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Brackets\CraftablePro\Http\Middleware\TrackLastActive->handle()
#32 /www/wwwroot/myproject/vendor/brackets/craftable-pro/src/Http/Middleware/SetLocale.php(18): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}()
#33 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Brackets\CraftablePro\Http\Middleware\SetLocale->handle()
#34 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}()
#35 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Routing\Middleware\SubstituteBindings->handle()
#36 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authenticate.php(44): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}()
#37 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Auth\Middleware\Authenticate->handle()
#38 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(78): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}()
#39 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle()
#40 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}()
#41 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\View\Middleware\ShareErrorsFromSession->handle()
#42 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(121): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}()
#43 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\Session\Middleware\StartSession->handleStatefulRequest()
#44 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Session\Middleware\StartSession->handle()
#45 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}()
#46 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle()
#47 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(67): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}()
#48 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Cookie\Middleware\EncryptCookies->handle()
#49 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}()
#50 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Routing/Router.php(797): Illuminate\Pipeline\Pipeline->then()
#51 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Routing/Router.php(776): Illuminate\Routing\Router->runRouteWithinStack()
#52 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Routing/Router.php(740): Illuminate\Routing\Router->runRoute()
#53 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Routing/Router.php(729): Illuminate\Routing\Router->dispatchToRoute()
#54 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(190): Illuminate\Routing\Router->dispatch()
#55 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http{closure}()
#56 /www/wwwroot/myproject/vendor/barryvdh/laravel-debugbar/src/Middleware/InjectDebugbar.php(59): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}()
#57 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Barryvdh\Debugbar\Middleware\InjectDebugbar->handle()
#58 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}()
#59 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle()
#60 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull->handle()
#61 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}()
#62 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(40): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle()
#63 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Foundation\Http\Middleware\TrimStrings->handle()
#64 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}()
#65 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Foundation\Http\Middleware\ValidatePostSize->handle()
#66 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(86): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}()
#67 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance->handle()
#68 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php(49): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}()
#69 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Http\Middleware\HandleCors->handle()
#70 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(39): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}()
#71 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Http\Middleware\TrustProxies->handle()
#72 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}()
#73 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(165): Illuminate\Pipeline\Pipeline->then()
#74 /www/wwwroot/myproject/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(134): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter()
#75 /www/wwwroot/myproject/public/index.php(51): Illuminate\Foundation\Http\Kernel->handle()
#76 {main}`

i'm using :
System : Ubuntu 22.04.5
PHP : 8.2

"laravel/framework": "^9.19",

"spatie/laravel-medialibrary": "^10.0.0",
"spatie/laravel-package-tools": "^1.9.2",
"spatie/laravel-permission": "^5.5",
"spatie/laravel-query-builder": "^5.0",
"spatie/laravel-settings": "^2.6",
"spatie/laravel-tags": "^4.3",
"spatie/laravel-translation-loader": "^2.7",

@oussamanm
Copy link
Author

I just figured out why the media registration was called twice.

After many hours of debugging, I discovered that the observer was responsible for the second call of media registration. In my model, I have an observer: created. After disabling it, everything worked fine. Now, I need to find a way to ensure that media registration is called only once, even if I have an observer.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant