2016-06-09 17 views
0

Ich habe Probleme beim Speichern von Bildern im Ordner 'public' des Laravel-Frameworks (was ich glaube, dass es sich um den statischen Inhaltsordner handelt? Bitte korrigieren Sie mich, wenn ich falsch liege).Statischen Inhalt in den öffentlichen Ordner von Laravel speichern

Ich benutze einen Seed mit Faker, der Bilder erzeugt und speichert die Bilder URLs in einer Tabelle. Dies funktioniert alles korrekt, aber der Seed selbst schlägt fehl, da er scheinbar nicht auf den Ordner innerhalb des von mir erstellten Öffentlichen Ordners zugreifen kann. Das ist meine öffentliche Ordner-Struktur:

/public/assets/images

Und hier ist mein Samen, die meine Bilder in diesen Ordner speichern soll:

<?php 

use Illuminate\Database\Seeder; 

class ProductsTableSeeder extends Seeder 
{ 
    /** 
    * Run the database seeds. 
    * 
    * @return void 
    */ 
    public function run() 
    { 
     DB::table('products')->truncate(); 

     $faker = Faker\Factory::create(); 

     $limit = 30; 

     for($i = 0; $i < $limit; $i++) { 
      DB::table('products')->insert([ 
       'title'  => $faker->name, 
       'SKU'   => $faker->name, 
       'description' => $faker->text, 
       'created_at' => $faker->dateTime, 
       'updated_at' => $faker->dateTime, 
       'images'  => $faker->image(URL::to(Config::get('assets.images')) ,800, 600, [], []) 
      ]); 
     } 
    } 
}# 

Die 'assets.images' config-Datei ist:

<?php 
    return [ 
     'images' => '/assets/images' 
    ]; 

Wenn ich versuche, und den Samen betreiben meine Datenbank zu füllen ich die folgende Fehlermeldung erhalten:

[InvalidArgumentException]          
    Cannot write to directory "http://localhost:8931/assets/images" 

Ich kann nicht sehen, wo ich falsch liege. Kann mir jemand Einblick geben?

+0

'http: // localhost: 8931/assets/images' Ich denke, das sollte 'http: // localhost: 8931/public/assets/images' sein – aldrin27

Antwort

1

Ich bin kein Laravel-Experte, aber die ausgelöste Ausnahme sieht so aus, als würden Sie versuchen, in eine URL statt in einen Dateipfad auf der Festplatte zu schreiben.

Vielleicht möchten Sie überprüfen, ob der Prozessbesitzer, der das PHP-Skript ausführt, Schreibzugriff auf diesen Speicherort hat.

+0

yeah Ich habe den Funktionsaufruf auf einen geändert, der auf einen Dateipfad zugreift, und ich bekomme immer noch denselben Fehler. Meine Berechtigungen sind auch in Ordnung. – devoncrazylegs

2

ändern Ihren Anruf von URL :: to mit der Hilfsfunktion public_path() wie folgt aus:

$faker->image(public_path(Config::get('assets.images')) ,800, 600, [], [])

+0

Hallo dort. Ich änderte es zu Ihrem Code (und verstehe, warum ich das stattdessen verwenden sollte), aber ich bekomme immer noch den gleichen Fehler. Nur um zu klären, sind die Berechtigungen für den Ordner auch in Ordnung. – devoncrazylegs

+0

Sind Sie sicher, dass es absolut der gleiche Fehler ist? Kein anderes Verzeichnis? Keine andere Ausnahme? – TheFallen

+0

Ja, es ist der gleiche Fehler: [InvalidArgumentException] Kann nicht in das Verzeichnis "/ var/www/public/assets/images" schreiben – devoncrazylegs