Laravel storage link funktioniert nicht auf die Produktion
Ich bin mit storage_path
zu speichern, meine Bilder und ich symbolisch meine Speicher-Ordner zu public_html
php artisan storage:link
Auf dem lokalen funktioniert alles einwandfrei, wenn ich ein Bild hochladen, wird es in den Ablageordner hochladen und link an, erscheint es in public
Ordner, aber da zog ich Sie zu live-host-und-Produktion-Modus meine Bilder hochladen in den Speicher-Ordner aber nichts in meiner public_html/storage
und ich bin nicht in der Lage, Sie in meine front-end.
Codes
/config/filesystems.php
'public' => [
'driver' => 'local',
'root' => storage_path('app/public/'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
.env
FILESYSTEM_DRIVER=public
controller sample
if ($request->hasFile('image')) {
$image = $request->file('image');
$filename = 'page' . '-' . time() . '.' . $image->getClientOriginalExtension();
$location = storage_path('app/public/images/' . $filename);
Image::make($image)->resize(1200, 600)->save($location);
if(!empty($page->image)){
Storage::delete('images/' . $page->image);
}
$page->image = $filename;
}
irgendeine Idee?
- Sie sind nicht mit einem
public
Verzeichnis, bist du mitpublic_html
. Ich weiß nicht, wie diese Strategie. Ein öffentliches Verzeichnis, inpublic_html
und setzen dieurl
zuenv('APP_URL').'/public/storage'
. - Sie müssen wieder die sym-link auf dem server, wird es nicht übertragen, es mit
- sorry, aber ich bin verwirrt, 1)
Make a public directory in public_html
ich habe in meinem Ordnerpublic_html
es ist erstellt, wenn ich lief Handwerker-Befehl, 2) ich habe'url' => env('APP_URL').'/public/storage',
aber nichts geändert, noch immer kann ich nicht an meine Bilder - wie mache ich das? ich habe keine terminal in meinem host (nicht sicher!)
- Sind Sie wirklich sicher, dass Sie sollten mit
$image->getClientOriginalExtension();
? Das würde mir erlauben, zu speichern .php-Datei auf Ihren server und führen Sie code in es. - es gibt ein paar Möglichkeiten, es zu tun, können Sie führen, dass Sie denselben Befehl aus einer route können Sie ftp-und in einigen ftp-Programmen können Sie machen, ein sym-link. Cpanel auch funktionieren würde -> namecheap.com/support/knowledgebase/article.aspx/9561/29/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich nur auf dieses problem, und das ist, wie ich es behoben, ohne die Notwendigkeit von SSH ' Ing in den server oder läuft ein CronJob:
Für Laravel 5+ (Noch nicht getestet, mit niedriger version)
Können Sie verwenden
Artisan::call()
- Methode innerhalb Ihrer route/controller zur Ausführung artisan-Befehle ohne die Verwendung der terminal.ändern storage_path Einstellungen public_path
wenn das nicht funktioniert, können Sie versuchen:
Ordner löschen die Speicherung Von öffentlichen und führen Sie diesen Befehl in Cron-Job [ one time ]
ln -s /home/public_html/storage/app/public /home/dev5/public_html/public/storage
GELÖST
Dank für alle Ihre Hilfe, ich habe versucht zu laufen
php artisan storage:link
auf meinem server und ich habe herausgefunden, dass mein server deaktiviert hatsymlink
für die Sicherheit Grund.So, ich habe das alles verändert mein Bild-Upload-Funktionen zum hochladen von Bildern in mein
public
Ordner stattstorage
Ordner und jetzt funktioniert alles einwandfrei.Können Sie auch löschen Sie Ihre Ordner-Ablage:link zuerst, dann öffnen Sie das terminal in den host-und den Befehl php artisan Lagerung:link . Wenn Ihr hosting-support-symlink-es funktioniert
Lösung:
Sobald Ihre Anmeldung ist hochgeladen auf den live-server.
Überprüfen Sie einfach, dass, wenn Sie irgendwelche Speicher-Ordner in den öffentlichen Verzeichnis.
Überprüfen Sie die Ordner-Stuktur
Löschen Sie einfach den Ordner storage aus der public-Verzeichnis.
Danach aus putty-software den Zugriff auf Ihre wichtigsten Laravel Projekt-Ordner, und führen Sie diesen Befehl auf Leben.
Erinnern zu konfigurieren .env Datei APP_URL={Ihr live-server-ip} und anschließend den nachstehenden Befehl.
Wird es eine neue storage link in den öffentlichen Ordner im Zusammenhang mit der APP_URL .