2016-06-24 8 views
0

Ich ziehe meine Haare über ein Problem in der Produktion: Ich kann meine Migrationen nicht ausführen zu laufen. Und nicht nur das, sondern einfach "php artisan" zu starten, erzeugt einen Fehler. Die seltsame Sache ist, dass alles lokal gut funktioniert.Artisan wird nicht in der Produktion arbeiten, aber funktioniert gut lokal

Ich benutze Laravel 5.1 und habe versucht, meine App erneut auf dem Server zu klonen, den Hersteller neu zu installieren (nachdem der Composer-Cache geleert wurde), .env zu wiederholen und den entsprechenden Bootstrap/Cache- und Speicherdateien Berechtigungen zu erteilen. Ich habe auch alle meine Tabellen manuell gelöscht und dann, wenn das nicht funktionierte, die Datenbank selbst gelöscht und neu gemacht. Ich habe 'Composer Dump-Autoload' viele Male ausgeführt, als ich versuchte, die Quelle des Problems ohne Glück zu isolieren.

hatte ich einen Blick auf meine Log-Datei und das ist, was kommt:

[2016-06-24 06:07:16] production.ERROR: exception 'ErrorException' with message 'Trying to get property of non-object' in /var/www/html/foobooks/app/Services/PrivacyService.php:157 
Stack trace: 
#0 /var/www/html/foobooks/app/Services/PrivacyService.php(157): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError(8, 'Trying to get p...', '/var/www/html/l...', 157, Array) 
#1 /var/www/html/foobooks/app/Services/DateService.php(69): Foobooks\Services\PrivacyService->getPrivacyLevelIdWithPrivacyLevel('everyone') 
#2 /var/www/html/foobooks/vendor/laravel/framework/src/Illuminate/Cache/Repository.php(239): Foobooks\Services\DateService->Foobooks\Services\{closure}() 
#3 [internal function]: Illuminate\Cache\Repository->rememberForever('everyone_privac...', Object(Closure)) 
#4 /var/www/html/foobooks/vendor/laravel/framework/src/Illuminate/Cache/CacheManager.php(318): call_user_func_array(Array, Array) 
#5 /var/www/html/foobooks/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php(217): Illuminate\Cache\CacheManager->__call('rememberForever', Array) 
#6 /var/www/html/foobooks/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php(217): Illuminate\Cache\CacheManager->rememberForever('everyone_privac...', Object(Closure)) 
#7 /var/www/html/foobooks/app/Services/DateService.php(70): Illuminate\Support\Facades\Facade::__callStatic('rememberForever', Array) 
#8 /var/www/html/foobooks/app/Services/DateService.php(70): Illuminate\Support\Facades\Cache::rememberForever('everyone_privac...', Object(Closure)) 
#9 [internal function]: Foobooks\Services\DateService->__construct(Object(Foobooks\Repositories\Models\DbEventRepository), Object(Foobooks\Services\PrivacyService), Object(Foobooks\$ 
#10 /var/www/html/foobooks/vendor/laravel/framework/src/Illuminate/Container/Container.php(780): ReflectionClass->newInstanceArgs(Array) 
#11 /var/www/html/foobooks/vendor/laravel/framework/src/Illuminate/Container/Container.php(631): Illuminate\Container\Container->build('Foobooks\...', Array) 
#12 /var/www/html/foobooks/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(674): Illuminate\Container\Container->make('Foobooks\...', Array) 
#13 /var/www/html/foobooks/vendor/laravel/framework/src/Illuminate/Container/Container.php(220): Illuminate\Foundation\Application->make('Foobooks\...', Array) 
#14 /var/www/html/foobooks/vendor/laravel/framework/src/Illuminate/Container/Container.php(738): Illuminate\Container\Container->Illuminate\Container\{closure}(Object(Illuminate\Foundation\Application), Array) 
#15 /var/www/html/foobooks/vendor/laravel/framework/src/Illuminate/Container/Container.php(631): Illuminate\Container\Container->build(Object(Closure), Array) 
#16 /var/www/html/foobooks/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(674): Illuminate\Container\Container->make('Foobooks\...', Array) 
#17 /var/www/html/foobooks/vendor/laravel/framework/src/Illuminate/Container/Container.php(842): Illuminate\Foundation\Application->make('Foobooks\...') 
#18 /var/www/html/foobooks/vendor/laravel/framework/src/Illuminate/Container/Container.php(805): Illuminate\Container\Container->resolveClass(Object(ReflectionParameter)) 
#19 /var/www/html/foobooks/vendor/laravel/framework/src/Illuminate/Container/Container.php(776): Illuminate\Container\Container->getDependencies(Array, Array) 
#20 /var/www/html/foobooks/vendor/laravel/framework/src/Illuminate/Container/Container.php(631): Illuminate\Container\Container->build('Foobooks\...', Array) 
#21 /var/www/html/foobooks/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(674): Illuminate\Container\Container->make('Foobooks\...', Array) 
#22 /var/www/html/foobooks/vendor/laravel/framework/src/Illuminate/Console/Application.php(115): Illuminate\Foundation\Application->make('Foobooks\...') 
#23 /var/www/html/foobooks/vendor/laravel/framework/src/Illuminate/Console/Application.php(129): Illuminate\Console\Application->resolve('Foobooks\...') 
#24 /var/www/html/foobooks/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(226): Illuminate\Console\Application->resolveCommands(Array) 
#25 /var/www/html/foobooks/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(107): Illuminate\Foundation\Console\Kernel->getArtisan() 
#26 /var/www/html/foobooks/artisan(36): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) 
#27 {main} 

Die App tatsächlich zu sein scheint versucht, meine Klasse DateService irgendwo in der Autoload-Prozess zu instanziiert (die wiederum instanziiert PrivacyService) und das verursacht das Problem. Ich habe meine App nach allen Instanzen durchsucht, in die sie injiziert wurde, aber keiner scheint Teil des Autoloading-Prozesses zu sein - und sie erklärt nicht, warum die Dinge lokal gut funktionieren.

Anfangs, als sich der Handwerker beklagte, gab es mir einen "fehlenden Basistabellenfehler" und, aus welchem ​​Grund auch immer, wenn ich "Fälschung" die Tabelle in Datenbank erstellte und sie dann manuell fallen ließ, beschwerte sich die App über einen anderen Tabelle, bis ich das Handbuch erstellt/gelöscht habe. Ich war in der Lage, auf diese Weise durch Tabellenfehler zu gehen, bis ich den Fehler 'Versuch, Eigenschaft von Nicht-Objekt zu bekommen' traf.

Hat jemand eine Idee, was könnte das Problem sein? Es fühlt sich an, als gäbe es eine Art Datenbank-Caching-Datei, von der ich nichts weiß, die irgendwo herumlungert und dieses Problem verursacht, wodurch die App denkt, dass die Migrationen/Seeds bereits stattgefunden haben. Es scheint nur komisch, dass das Erstellen von gefälschten Tabellen und deren Löschen etwas zu tun hat, bis dieser Fehler auftaucht - auch, seltsam, dass nur die Produktionsumgebung betroffen ist.

Jede Hilfe oder Einsicht würde sehr geschätzt werden - danke!

+0

Ist das der gleiche Fehler, den Sie auf "php artisan" bekommen? – linuxartisan

+0

Ja - ich bekomme denselben Fehler, wenn ich nur 'php artisan' anrufe, wie ich es bei 'php artisan migrate' anrufe. Etwas Grundlegendes im Bootstrapping-Prozess scheint schiefzugehen. – murph

+0

Was läuft? 'Services/PrivacyService.php: 157' –

Antwort

0

Die Lösung: Aus irgendeinem Grund waren die Berechtigungen für einige Ordner in meinem Cache-Ordner anders als andere, so dass die flush() - Methode den Cache nicht vollständig löschte. Legacy-Ordner/-Dateien standen im Konflikt mit den Bootstrapping-Bemühungen von Handwerkern. Ich konnte das Problem lösen, indem ich erneut Berechtigungen für das Verzeichnis storage/framework/cache anwendete und flush() erneut ausführte. Sobald ich das getan hatte und sichergestellt hatte, dass ALLE Unterordner und Dateien aus dem Cache gelöscht wurden, konnte ich php artisan ohne Probleme ausführen.

Verwandte Themen