2016-12-13 2 views
0

Wenn ich versuche, eine Datei hochzuladen, erhalte ich einen HTTP 500 Fehler. Wenn mir jemand in die richtige Richtung zeigen könnte. Es gibt drei Dateien, Upload.php, upload_success.php und upload_form.php. Ich habe die Autoload-, Config-, Datenbank-Dateien richtig eingerichtet.Codeignender File Upload Interner Server Fehler

 <?php 

     class Upload extends CI_Controller { 

      public function __construct() { 
      parent::__construct(); 
      $this->load->helper(array('form', 'url')); 
      $this->load->database(); 
      } 

      public function index() { 
      $this->load->view('upload_form', array('error' => ' ')); 
      } 

      public function do_upload() { 
      $config['upload_path'] = './uploads/'; 
      $config['allowed_types'] = '*'; 
      $config['max_size']  = 100; 
      $config['max_width']  = 1024; 
      $config['max_height'] = 768; 
      $this->load->library('upload', $config); 

      if (! $this->upload->do_upload('userfile')) { 
       $error = array('error' => $this->upload->display_errors()); 
       $this->load->view('upload_form', $error); 
      } 

      else { 
       $data = array('upload_data' => $this->upload->data()); 
       $this->load->view('upload_success', $data); 
      } 
      } 
     } 
    ?> 



<html> 

    <head> 
     <title>Upload Form</title> 
    </head> 

    <body> 
     <h3>Your file was successfully uploaded!</h3> 

     <ul> 
     <?phpforeach ($upload_data as $item => $value):?> 
     <li><?php echo $item;?>: <?php echo $value;?></li> 
     <?phpendforeach; ?> 
     </ul> 

     <p><?php echo anchor('upload', 'Upload Another File!'); ?></p> 
    </body> 

</html> 


     <html> 

     <head> 
      <title>Upload Form</title> 
     </head> 

     <body> 
      <?php echo $error;?> 
      <?php echo form_open_multipart('upload/do_upload');?> 

      <form action = "" method = ""> 
      <input type = "file" name = "userfile" size = "20" /> 
      <br /><br /> 
      <input type = "submit" value = "upload" /> 
      </form> 

     </body> 

    </html> 
+1

verwenden Sie localhost Server oder einen Produktionsserver (wie einen Shared-Hosting-Server)? – Vickel

+0

vielleicht ein Berechtigungsproblem? – Pipe

+0

Könnte sein, Ihre htaccess Datei und Ordner Berechtigungen 0777 für Uploads Ordner stellen Sie auch sicher, dass Sie Ihre Config-Basis-URL nicht leer in config.php – user4419336

Antwort

0

Dieser Code scheint ein wenig seltsam. Nicht sicher, ob das 500 tho verursachen könnte.

<ul> 
    <?phpforeach ($upload_data as $item => $value):?> 
    <li><?php echo $item;?>: <?php echo $value;?></li> 
    <?phpendforeach; ?> 
    </ul> 

Können Sie versuchen, es stattdessen mit diesem zu ersetzen?

Auch, es ist erwähnenswert, dass in (was es scheint) Ihre letzte Datei, die Sie zwei Formulare geöffnet haben. Eine über form_open_multipart() und eine andere mit reinem HTML.

Bitte entfernen Sie diese Zeile:

<form action = "" method = "">

und ersetzen diese </form> mit form_close() (die Ergebnisse werden die gleichen, aber nur für die Code-Konsistenz).

Ich hoffe, es hilft.

+0

Vielen Dank für die Antwort, ich habe die von Ihnen vorgeschlagenen Änderungen vorgenommen und erhalte immer noch einen Fehler von 500. Wenn ich nach dem Auswählen einer Datei auf Upload klicke, wird die Seite geladen und schlägt fehl/upload/do_upload/und gibt einen Fehler von 500 aus. Irgendwelche anderen Gedanken? – user7292978

+0

neben dem falsch geschriebenen PHP-Code wird dies keinen 500 Fehler provozieren, w. Dieser Fehler bedeutet, dass Sie einige Informationen an den Server gesendet haben, mit denen er nicht umgehen kann, daher der 500-Fehler. Deshalb habe ich früher gefragt, sind Sie auf localhost oder Produktion? – Vickel

1

auf einem Shared-Hosting, Sie am meisten brauchen wahrscheinlich einen anderen relativen Pfad als auf einer lokalen Host-Umgebung:

Sie auf einer lokalen Host-Umgebung

$config['upload_path'] = './uploads/'; 

aber auf einem, Shared Hosting verwenden, können Sie werden müssen spezifischere, so etwas wie

$config['upload_path'] = '/home/yourserver/public_html/uploads/'; 

Sie dies in Ihrer Konten cPanel Haupt-Seite auf der linken Spalte können oder rufen Sie Ihren Provider-Helpdesk für weitere Informationen liefern auf dem richtigen Pfad

+0

Ich habe den Pfad zu G geändert: \\ PleskVhosts \\ usw. und ich bekomme immer noch den Fehler 500. Ich bin ziemlich sicher, dass dieses Pfadformat korrekt ist, da mein php erfolgreich in meinen Sitzungsordner schreibt. In config/database.php wobei $ db ['default'] = array, was sollte der 'hostname' sein? Ich bin mir nicht sicher, ob das Teil meines Problems wäre ... – user7292978

+1

das ist wahrscheinlich "localhost". Vergessen Sie nicht, sobald Sie eine neue Datenbank auf dem freigegebenen Server hinzufügen, müssen Sie auch einen Benutzer hinzufügen, sonst funktioniert das nicht.Auch der Pfad, den Sie in Ihrem Kommentar erwähnen, ist nicht relativ, aber ein Windows-ähnlicher Pfad – Vickel

+1

@ user7292978, wenn Sie auf einem GoDaddy shared Hosting-Konto sind, dann macht 'G: \\ PleskVhosts \\ etc' absolut keinen Sinn für mich. Versuchen Sie den Pfad wie im Abschnitt "Shared Hosting" dieser Antwort oben beschrieben! – Sparky