Search code examples
laravelpermissionslaravel-5.3

Permission Denied after adding Sitemap ServiceProvider?


I installed Roumen\Sitemap via composer on my development machine running an existing Laravel 5.3 project and setup the service provider & middleware route. It all worked great on my development environment.

I uploaded the following files & folders to a webserver via FTP.

/Http/Kernel.php (added ''sitemap' => '\App\Http\Middleware\Sitemap',' to the protected $middleware variable)
/config/sitemap.php
/config/app.php // (added Roumen\Sitemap\SitemapServiceProvider::class)
/public         // (for some vendor views and assets)
/Http/routes.php    // (just for retrieving the sitemap)
/Http/Middleware/Sitemap.php

Just to be sure, I ran sudo chmod -R 777 vendor and sudo chmod -R 777 storage

But I get the error:

production.ERROR: exception 'ErrorException' with message 'file_put_contents(myproject/bootstrap/cache/services.php): failed to open stream: Permission denied' in /myproject/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:111
Stack trace:
#0 [internal function]: Illuminate\Foundation\Bootstrap\HandleExceptions->handleError(2, 'file_put_conten...', '/myproject/la...', 111, Array)
#1 /myproject/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php(111): file_put_contents('/myproject/...', '<?php return ar...', 0)
#2 /myproject/vendor/laravel/framework/src/Illuminate/Foundation/ProviderRepository.php(190): Illuminate\Filesystem\Filesystem->put('/myproject/la...', '<?php return ar...')
#3 /myproject/vendor/laravel/framework/src/Illuminate/Foundation/ProviderRepository.php(135): Illuminate\Foundation\ProviderRepository->writeManifest(Array)
#4 /myproject/vendor/laravel/framework/src/Illuminate/Foundation/ProviderRepository.php(60): Illuminate\Foundation\ProviderRepository->compileManifest(Array)
#5 /myproject/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(530): Illuminate\Foundation\ProviderRepository->load(Array)
#6 /myproject/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/RegisterProviders.php(17): Illuminate\Foundation\Application->registerConfiguredProviders()
#7 /myproject/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(203): Illuminate\Foundation\Bootstrap\RegisterProviders->bootstrap(Object(Illuminate\Foundation\Application))
#8 /myproject/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(232): Illuminate\Foundation\Application->bootstrapWith(Array)
#9 /myproject/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(127): Illuminate\Foundation\Http\Kernel->bootstrap()
#10 /myproject/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(99): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))
#11 /myproject/public/index.php(54): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
#12 {main}  

Did I forget something?


Solution

  • 'ErrorException' with message 'file_put_contents(myproject/bootstrap/cache/services.php): 
    failed to open stream: Permission denied' 
    

    It's pretty obvious that the permissions is incorrect in the bootstrap/cache folder.

    Easy fix: sudo chown -R www-data:www-data /myproject/bootstrap/cache