2016-01-30 4 views
8

Heute Abend habe ich versucht, composer install laufen und alle Abhängigkeiten korrekt installiert, und dann lief php artisan clear compiled composer und ich lief in Schwierigkeiten.Laravel Berechtigung verweigert

Hier ist der Fehler, der es zurück:

> php artisan clear-compiled 


    [ErrorException]                           
    file_put_contents(/srv/something/site/bootstrap/cache/services.php): failed to open stream: No such file or directory 


Script php artisan clear-compiled handling the post-install-cmd event returned with an error 



    [RuntimeException] 
    Error Output:  



install [--prefer-source] [--prefer-dist] [--dry-run] [--dev] [--no-dev] [--no-plugins] [--no-custom-installers] [--no-autoloader] [--no-scripts] [--no-progress] [-v|vv|vvv|--verbose] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--ignore-platform-reqs] [--] [<packages>]... 

Natürlich habe ich gegoogelt und fand jeder auf den laracast forums sagen, das Verzeichnis zu machen ich fehlte, also tat ich, und der Befehl lief wieder in Ordnung. Als ich auf jede Seite ging habe ich dies: file_put_contents(/differentNameDependingOnPageButAlwaysRandomLettersAndNumbers.php): failed to open stream: Permission denied

Zum Beispiel ist hier die Rückverfolgung für die Login-Seite:

ErrorException in Filesystem.php line 81: 
file_put_contents(/8ff8cea6e3bb10ecec87b9d62c64f9768c4c4ab1.php): failed to open stream: Permission denied 
in Filesystem.php line 81 
at HandleExceptions->handleError('2', 'file_put_contents(/8ff8cea6e3bb10ecec87b9d62c64f9768c4c4ab1.php): failed to open stream: Permission denied', '/srv/something/site/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php', '81', array('path' => '/8ff8cea6e3bb10ecec87b9d62c64f9768c4c4ab1.php', 'contents' => '<?php $__env->startSection('title'); ?> Admin Login <?php $__env->stopSection(); ?> <?php $__env->startSection('form'); ?> <form class="form-horizontal" method="POST" action = "login"> <?php echo e($error); ?><?php /*TODO this doesn't show up now, when you do login make it show up*/ ?> <fieldset> <!-- Form Name --> <h1 class="section-heading" style="text-align: center;">Login</h1> <!-- Text input--> <div class="form-group"> <label class="col-md-4 control-label" for="email">Email</label> <div class="col-md-4"> <input id="email" name="email" type="email" id = "email" placeholder="[email protected]" class="form-control input-md" required=""> </div> </div> <!-- Password input--> <div class="form-group"> <label class="col-md-4 control-label" for="password">Password</label> <div class="col-md-4"> <input id="password" name="password" type="password" placeholder="********" class="form-control input-md" required=""> </div> </div> <!-- Button --> <div class="form-group"> <label class="col-md-4 control-label" for="Submit"></label> <div class="col-md-4"> <button id="submit" name="submit" class="btn btn-primary">Submit</button> </div> </fieldset> </form> <?php $__env->stopSection(); ?> <?php $__env->startSection('message'); ?> <p class="text-muted" style="text-align:center">Don't have an account yet? Click <a href="../register">here</a> to register.</p> <?php $__env->stopSection(); ?> <?php echo $__env->make('auth.partials.master', array_except(get_defined_vars(), array('__data', '__path')))->render(); ?>', 'lock' => false)) 
at file_put_contents('/8ff8cea6e3bb10ecec87b9d62c64f9768c4c4ab1.php', '<?php $__env->startSection('title'); ?> Admin Login <?php $__env->stopSection(); ?> <?php $__env->startSection('form'); ?> <form class="form-horizontal" method="POST" action = "login"> <?php echo e($error); ?><?php /*TODO this doesn't show up now, when you do login make it show up*/ ?> <fieldset> <!-- Form Name --> <h1 class="section-heading" style="text-align: center;">Login</h1> <!-- Text input--> <div class="form-group"> <label class="col-md-4 control-label" for="email">Email</label> <div class="col-md-4"> <input id="email" name="email" type="email" id = "email" placeholder="[email protected]" class="form-control input-md" required=""> </div> </div> <!-- Password input--> <div class="form-group"> <label class="col-md-4 control-label" for="password">Password</label> <div class="col-md-4"> <input id="password" name="password" type="password" placeholder="********" class="form-control input-md" required=""> </div> </div> <!-- Button --> <div class="form-group"> <label class="col-md-4 control-label" for="Submit"></label> <div class="col-md-4"> <button id="submit" name="submit" class="btn btn-primary">Submit</button> </div> </fieldset> </form> <?php $__env->stopSection(); ?> <?php $__env->startSection('message'); ?> <p class="text-muted" style="text-align:center">Don't have an account yet? Click <a href="../register">here</a> to register.</p> <?php $__env->stopSection(); ?> <?php echo $__env->make('auth.partials.master', array_except(get_defined_vars(), array('__data', '__path')))->render(); ?>', '0') in Filesystem.php line 81 
at Filesystem->put('/8ff8cea6e3bb10ecec87b9d62c64f9768c4c4ab1.php', '<?php $__env->startSection('title'); ?> Admin Login <?php $__env->stopSection(); ?> <?php $__env->startSection('form'); ?> <form class="form-horizontal" method="POST" action = "login"> <?php echo e($error); ?><?php /*TODO this doesn't show up now, when you do login make it show up*/ ?> <fieldset> <!-- Form Name --> <h1 class="section-heading" style="text-align: center;">Login</h1> <!-- Text input--> <div class="form-group"> <label class="col-md-4 control-label" for="email">Email</label> <div class="col-md-4"> <input id="email" name="email" type="email" id = "email" placeholder="[email protected]" class="form-control input-md" required=""> </div> </div> <!-- Password input--> <div class="form-group"> <label class="col-md-4 control-label" for="password">Password</label> <div class="col-md-4"> <input id="password" name="password" type="password" placeholder="********" class="form-control input-md" required=""> </div> </div> <!-- Button --> <div class="form-group"> <label class="col-md-4 control-label" for="Submit"></label> <div class="col-md-4"> <button id="submit" name="submit" class="btn btn-primary">Submit</button> </div> </fieldset> </form> <?php $__env->stopSection(); ?> <?php $__env->startSection('message'); ?> <p class="text-muted" style="text-align:center">Don't have an account yet? Click <a href="../register">here</a> to register.</p> <?php $__env->stopSection(); ?> <?php echo $__env->make('auth.partials.master', array_except(get_defined_vars(), array('__data', '__path')))->render(); ?>') in BladeCompiler.php line 102 
at BladeCompiler->compile('/srv/something/site/resources/views/auth/login.blade.php') in CompilerEngine.php line 51 
at CompilerEngine->get('/srv/something/site/resources/views/auth/login.blade.php', array('__env' => object(Factory), 'app' => object(Application), 'error' => '')) in View.php line 135 
at View->getContents() in View.php line 106 
at View->renderContents() in View.php line 80 
at View->render() in Response.php line 53 
at Response->setContent(object(View)) in Response.php line 197 
at Response->__construct(object(View)) in Router.php line 1030 
at Router->prepareResponse(object(Request), object(View)) in ControllerDispatcher.php line 95 
at ControllerDispatcher->Illuminate\Routing\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103 
at Pipeline->then(object(Closure)) in ControllerDispatcher.php line 96 
at ControllerDispatcher->callWithinStack(object(authController), object(Route), object(Request), 'getAdminLogin') in ControllerDispatcher.php line 54 
at ControllerDispatcher->dispatch(object(Route), object(Request), 'App\Http\Controllers\authController', 'getAdminLogin') in Route.php line 174 
at Route->runController(object(Request)) in Route.php line 140 
at Route->run(object(Request)) in Router.php line 703 
at Router->Illuminate\Routing\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103 
at Pipeline->then(object(Closure)) in Router.php line 705 
at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 678 
at Router->dispatchToRoute(object(Request)) in Router.php line 654 
at Router->dispatch(object(Request)) in Kernel.php line 246 
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in CheckForMaintenanceMode.php line 44 
at CheckForMaintenanceMode->handle(object(Request), object(Closure)) 
at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103 
at Pipeline->then(object(Closure)) in Kernel.php line 132 
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 99 
at Kernel->handle(object(Request)) in index.php line 54 

weit, so zu versuchen, dies ich zu beheben habe folgendes getan:

  1. auf Berechtigungen, änderte sich alles zu 777 und von www-data
  2. Versuchte Reklonierung das leere Repository ohne Anbieter-Datei gehört zu werden, ohne Erfolg, gleiche Fehler auf Komponisten Stall
  3. Ran php artisan cache:clear
  4. php artisan clear-compiled
  5. php artisan dump-autoload
  6. Modified site/config/view.php auf einem irc Vorschlag Ran Ran und änderte compiled' => realpath(storage_path().'/framework/views')-'compiled' => storage_path('framework/views'),, die einen anderen Fehler ergab: file_put_contents(/srv/something/site/storage/framework/views/8ff8cea6e3bb10ecec87b9d62c64f9768c4c4ab1.php): failed to open stream: No such file or directory (wahrscheinlich, weil es nicht dort zu sein, angenommen hat, aber wer weiß, dass diese Information nützlich sein könnte.)

All dies vergeblich. Der komische Teil ist, dass dieses Problem anscheinend aus dem Nichts auftauchte. Danke für die Hilfe!

+2

Es scheint ziemlich eindeutig ein Problem mit Berechtigungen zu sein. Ich weiß, du hast gesagt, du hättest eine '777' gesprengt, aber wo hast du das gemacht? Ich würde fortfahren und eine rekursive 777 auf dem Speicherverzeichnis versuchen: 'chmod -R 777 Speicher' – jpschroeder

+0

@jpschroeder Ich versuchte das ohne Erfolg, hier ist ein ls-l meines Laravel-Stammverzeichnisses und des Speicherverzeichnisverzeichnisses: https: // git.io/vzxAE –

+2

Ihr ls -l zeigt, dass das gesamte Verzeichnis root gehört und das Speicherverzeichnis nicht beschreibbar ist. Daher glaube ich nicht, dass Sie die Berechtigungen korrekt ändern. 'cd {laravel_root}' und rufe 'sudo chown -R www-data: www-data.' 'sudo chmod -R 777 storage' – judereid

Antwort

22

Es stellt sich heraus, dass ich eine Ansicht Verzeichnisse in laravel_root/storage/ fehlte. Um dies zu beheben, alles, was ich tun musste, war:

  1. cd {laravel_root}/storage
  2. mkdir -pv framework/views app framework/sessions framework/cache
  3. cd ..
  4. chmod 777 -R storage
  5. chown -R www-data:www-data storage

Danach, beim erneuten Laden der Ausgabe wurde behoben. Danke an Someguy123 von #laravel an freenode für die Behebung dieses Problems!

+1

Ich bin froh, dass Sie es zum Laufen gebracht haben. Es ist seltsam, dass Sie diese Verzeichnisse manuell erstellen mussten, da sie Teil des ursprünglichen [laravel repo] sind (https://github.com/laravel/laravel/tree/master/storage/framework). Haben Sie bei der Installation den Befehl 'composer create-project' verwendet? – jpschroeder

+0

@jpschroeder yep, das Problem war mit git versehentlich das Löschen der Dateien. –

+2

Einstellung 777 ist eine schlechte Angewohnheit, in Betracht zu ziehen, die Gruppe zu Ihrem Webserverbenutzer einzustellen und Erlaubnis nur dieser Gruppe zu erteilen, in diesen Ordner zu schreiben. Überprüfen Sie diese Antwort: http://StackOverflow.com/a/37266353/987864 – Daan

0

hatte ich die gleiche problem.This war nach einem neuen Projekt mit git clone.Turns Schaffung heraus, es war, weil ich hatte/storage/Rahmen/views/auf gitignore file.I einfach mkdir storage/framework/views/ und sudo chown -R www-data:www-data storage und alles wieder in Ordnung war. Hoffe es hilft jemandem.

0

Ich fand, dass, wenn Sie in Laravel gitignore.io und ziehen Sie gehen Sie diese als Standard erhalten

# Laravel 4 spezifische Bootstrap/zusammengestellt.php app/storage/

# Laravel 5 & Lumen spezifischen Bootstrap/cache/ .env. *. php .env.php .env

ich einfach nur Platz ein #bootstrap/cache im Laravel 5 Abschnitt wie folgt:

Laravel 5 & Lumen spezifisch

# Bootstrap/cache/ .env. *. Php .env.php .env

Hoffe, dass jemand hilft.

+0

Sie müssen zuerst die Ordner erstellen, obwohl –

0

Wenn Ihre Berechtigungen 777 für Laravel Application-Ordner sind und immer noch diesen Fehler erhalten, ist es, weil Seliux es blockiert hat. Der Anwendungsordner kann mit dem folgenden Befehl entsperrt werden:

su -c "chcon -R -h -t httpd_sys_script_rw_t /var/www/laravel-folder" 
+0

Wenn Sie SElinux (überprüfen /var/log/audit/audit.log) und Sie versuchen, einschließlich PHP -Dateien außerhalb des http-Stammordners finden Sie unter https://stackoverflow.com/questions/15395845/tell-selinux-to-give-apache-execute-access-to-php-files-outside-document-root –