2016-06-19 13 views
0

Hallo ich bin noch neu, um localhost-Projekt in Putty-Server zu machen, und ich benutze auch FileZilla.Datei kann nicht in Ordner geschrieben werden

meine Upload-Image-Funktion funktioniert gut in localhost, aber wenn ich es auf dem Server versuchte. der Fehler passiert ist wie diese fileException

und hier ist mein Controller

public function uploadPic(Request $request) 
{ 
    $rules = ['image' => 'required|image|max:1024*1024*1']; 

    $validator = \Validator::make($request->all(),$rules); 

    if($validator->fails()) 
    { 
     return redirect('profile')->withErrors($validator); 
    } 
    else 
    { 
     $file = $request->file('image'); 
     $file->move(public_path("profile-image/"), $file->getClientOriginalName()); 
     $thisUser = \Auth::id(); 

     $result = User::where('id','=',$thisUser)->update(['path_gambar' => $file->getClientOriginalName()]); 
    } 
    return redirect('profile'); 
} 

und hier ist der Blick Klinge

<form class="form-group-sm" action="{{ url('/upload-image') }}" method="post" enctype="multipart/form-data"> 
       <input id="token" type="hidden" name="_token" value="{{ csrf_token() }}"> 
       <div> 
        <input type="file" class="btn" name="image" id="file"> 
       </div> 
      <span class="help-block"> 
       <strong>{{ $errors->first('image') }}</strong> 
      </span> 
       <div style="text-align: inherit"> 
        <button type="submit" class="btn btn-group-sm" value="upload" name="Submit">Upload</button> 
       </div> 
      </form> 
+1

Sie haben nicht festgelegt, die Berechtigungen für diesen Ordner richtig für Laravel darauf zuzugreifen. Verfügen Sie über SSH-Zugriff auf Ihren Server? – James

+0

@James Ich benutze keinen SSH-Schlüssel, aber es funktioniert im localhost hmm – rinaldy31

Antwort

1

Ihr Problem ist entweder ein Dateisystem Berechtigungsfehler oder fehlerhafte Datei Wegfehlers .

Der Grund dafür, dass dies auf Ihrem lokalen Computer funktioniert, ist, dass Ihr lokales System toleranter ist - Ihr Benutzer verfügt über ausreichende Berechtigungen zum Schreiben der Datei oder das System hilft Ihnen, den schlechten Pfad zu einem guten zu lösen. Dies liegt wahrscheinlich daran, dass Sie ein Betriebssystem wie Windows verwenden, das Berechtigungen nicht auf die gleiche Weise erzwingt wie Ihr * nix-Server.

Blick Lassen Sie sich bei diesen Fragen

  • Falsch formatierte Dateipfad
  • Nicht vorhandene Dateipfad
  • Unzureichende Berechtigungen

Pfad

Blick auf Ihrem Weg. Der Doppelstrich ist eine schlechte Sache.

/var/www/html/gracia/public // Profil-Bild

Es kann einige zugrunde liegenden Probleme, aber eine schnelle Lösung, um Test ist realpath() zu verwenden.

$file->move(realpath(public_path("profile-image/")), $file->getClientOriginalName()); 

Jetzt müssen Sie bestätigen, dass das Verzeichnis tatsächlich auf Ihrem Server vorhanden ist. SSH (Kitt) in das System und führen:

ls -l /var/www/html/gracia/public 

Oder FTP in und navigieren Sie zu dem Pfad.

Das Verzeichnis profile-image muss da sein.

Permission

SSH (Putty) in das System und führen:

ls -l /var/www/html/gracia/public 

Ausgabe (Beispiel):

drwxr-xr-x 2 gracia users 4096 Jun 19 12:27 profile-image 

Diese Berechtigungen bedeuten, dass nur der Benutzer gracia kann schreiben in das Verzeichnis. Es ist wahrscheinlich, dass der Webserver nicht als dieser Benutzer ausgeführt wird, daher müssen Sie die Berechtigungen ändern, damit das Verzeichnis für diesen Benutzer zugänglich ist.

Hier ist, wie Sie das Verzeichnis für alle Benutzer schreibbar machen.

chmod -R 777 public-image/ 

Ausgabe (Beispiel):

drwxrwxrwx 2 gracia users 4096 Jun 19 12:27 profile-image