2016-12-13 79 views
0

當我嘗試上載文件時,出現HTTP 500錯誤。如果有人能指引我正確的方向。下面有三個文件,Upload.php,upload_success.php和upload_form.php。我已經正確設置了自動加載,配置,數據庫文件。Codeigniter文件上傳內部服務器錯誤

 <?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

你使用本地主機服務器或生產服務器(如共享主機服務器)? – Vickel

+0

也許是一個權限問題? – Pipe

+0

可能是你的htaccess文件和文件夾權限0777上傳文件夾也確保你已經設置你的配置基地址不要留在config.php空白 – user4419336

回答

0

下面的代碼似乎有點奇怪。不確定是否會造成500人。

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

你可以嘗試用它代替嗎?

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

此外,值得一提的是,在(它好像是)你的最後一個文件你打開兩種形式。一個通過form_open_multipart(),另一個通過純html。

請刪除此行:

<form action = "" method = "">

而替換該</form>form_close()(結果是一樣的,只是對代碼的一致性)。

希望它有幫助。

一個共享的主機
+0

感謝您的回覆,我做出了您所建議的更改,並且仍然收到500錯誤。當我選擇文件後點擊上傳時,頁面加載失敗,並在/ upload/do_upload /上出現500錯誤。任何其他想法? – user7292978

+0

除了拼寫錯誤的php代碼外,這不會引發500錯誤,w。這個錯誤意味着你發送了一些信息給它無法處理的服務器,因此發生了500錯誤。這就是我之前問過的原因,你是在本地主機還是生產環境? – Vickel

1

,你很可能需要比在本地主機環境不同的相對路徑:

你可以在本地主機環境

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

而是一個共享的主機使用,你會需要提供更具體的,像

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

,你可以在你的帳戶的cPanel主頁上找到該左欄或致電服務檯提供更多信息在正確的路徑

+0

我改變了路徑到G:\\ PleskVhosts \\等,我仍然收到500錯誤。我相當肯定這種路徑格式是正確的,因爲我的PHP成功寫入我的會話文件夾。 在config/database.php其中$ db ['default'] =數組,'hostname'應該是什麼?我不知道這是否會成爲我的問題的一部分...... – user7292978

+1

最有可能是「本地主機」。不要忘了,一旦你在共享服務器上添加一個新的數據庫,你也需要添加一個用戶,否則這是行不通的。你在評論中提到的路徑並不是相對的,而是一條像路徑 – Vickel

+1

@ user7292978的窗口,如果你在GoDaddy共享主機帳戶,那麼'G:\\ PleskVhosts \\ etc'對我來說絕對沒有意義。按照上面這個答案的「共享託管」部分中的說明嘗試路徑! – Sparky

相關問題