2016-04-01 13 views
1

Ich möchte SQLITE für mein Laravel5-Projekt auf meinem Webserver verwenden. Ich habe mein lokales Laravel 5 Projekt auf meinen AWS ec2 Lampen Ubuntu Server migriert. http://realtoraxe.com/realtoraxe/public/ aber es zeigtWie richtet man SQLITE für Laravel-Webserver ein?

InvalidArgumentException in SQLiteConnector.php line 34: Database does not exist. 

ich die database.php Set für

SQLite geändert
<?php 
return array(
    'default' => 'sqlite', 
    'connections' => array(
    'sqlite' => array(
    'driver' => 'sqlite', 
    'database' => 'http://realtoraxe.com/realtoraxe/storage/database.sqlite', 
    'prefix' => '', 
    ), 
    ), 
); 
?> 

und ich änderte die .env zu

APP_ENV=local 
APP_DEBUG=true 
APP_KEY=mystring 
DB_CONNECTION=sqlite 
CACHE_DRIVER=file 
SESSION_DRIVER=file 

wenn ich php Handwerker tun migrieren sagt, es gibt keine Datenbank

Ich denke, was ich als Pfad für die Datenbank in der Datenbank.php geschrieben habe, ist falsch und muss ich irgendwie schreiben, wo meine IP-Adresse in der .env-Datei ist? Ich habe die ganze Nacht gegoogelt und kann das anscheinend nicht herausfinden.

+0

Es gibt Standard-sqlite-Konfigurationsoptionen in 'database.php'. Da die Datei bereits in Ihrem Speicherordner mit dem Namen 'database.sqlite' erwartet wird, müssen Sie Ihrer .env-Datei nur' DB_CONNECTION = sqlite' hinzufügen. – user3158900

Antwort

3

Sie brauchen nicht auf alle .php-Dateien zu bearbeiten. Sie können das alles in der .env-Datei machen, da die Dateien im config-Verzeichnis geschrieben werden, um zuerst die Werte aus der .env-Datei zu verwenden, und wenn sie nicht definiert sind, greifen Sie auf das zurück, was dort definiert ist.

env('DB_CONNECTION','mysql') würde den Wert aus der .env-Datei ergeben, und nur, wenn es nicht definiert ist, zurückfallen zu mysql.

Also in Ihrer .env Datei einfach den folgenden:

DB_CONNECTION=sqlite DB_DATABASE=database/database.sqlite und erstellen Sie eine Datei database.sqlite in Ihrem database Verzeichnis mit dem Namen (das ist, wo vereinbarungsgemäß als sein angenommenes.).Das ist es.

1

Warum verwenden Sie HTTP-Link? Ich denke, es sollte auf eine .sqlite DB Datei:

'database' => __DIR__.'/../database/production.sqlite', 

http://laravel-recipes.com/recipes/118/setting-up-the-sqlite-database-driver

+0

ja. Das ist ein http-Link. Muss ich meiner .env-Datei noch etwas hinzufügen? –

+0

@ user432495, haben Sie also verstanden, dass Sie keine HTTP-Verbindung verwenden können? Sie sollten einen Link zu der konkreten Datei angeben. –

+0

ja. Die Datei befindet sich in der Datei /database/database.sqlite. Ich schrieb die Zeile als 'Datenbank' => __DIR __. '/ ../database/database.sqlite', (Es sieht es immer noch nicht) –

2

Für Standard Laravel 5.2+ Installation:

eine SQLite-Datenbank-Datei erstellen

$ cd storage 
$ touch database.sqlite 
$ cd .. 

es

machen beschreibbar
$ chmod -R 777 storage 

bei ".env" file:

DB_CONNECTION=sqlite 
DB_DATABASE=storage/database.sqlite 

und entfernen oder alle anderen DB_ Kommentar * Aufzeichnungen

Wenn Sie relativen Pfad verwenden möchten, statt absolute Datenbankdatei in „config/Datenbank .php“

statt:

'database' => env('DB_DATABASE', database_path('database.sqlite')), 

schreiben:

'database' => __DIR__ . '/../' . env('DB_DATABASE'), 

jetzt wird Laravel App können SQLite-Datei finden, und php Mann arbeiten zu

+0

Jeder Grund, es im Speicherverzeichnis anstelle des Datenbankverzeichnisses zu speichern? – kjones

Verwandte Themen