2016-12-13 10 views
0

ファイルをアップロードしようとすると、HTTP 500エラーが発生します。誰かが私を正しい方向に向けることができたら。下には、Upload.php、upload_success.php、upload_form.phpという3つのファイルがあります。私は正しく自動ロード、設定、データベースファイルをセットアップしています。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である可能性もあります。設定ベースURLをconfig.phpに空白のままにしないでください。 – user4419336

答えて

0

このコードは少し奇妙です。 500トーを引き起こす可能性があるかどうかはわかりません。

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

代わりにこれに置き換えてください。

また、あなたの最後のファイルでは、2つのフォームを開いていることに言及する価値があります。 1つはform_open_multipart()経由で、もう1つは純粋なhtmlで。

は、この行削除してください:

<form action = "" method = "">

をと(結果はなく、単にコードの整合性のために、同じになります)form_close()この</form>を交換してください。

希望します。

+0

応答をありがとう、私はあなたが提案した変更を加えた、私はまだ500のエラーが表示されます。ファイルを選択した後にアップロードをクリックすると、ページが読み込まれて/ upload/do_upload /に失敗し、500エラーが返されます。他の考え? – user7292978

+0

スペルミスのあるPHPコード以外に、これは500エラーを引き起こすことはありません。このエラーは、処理できないサーバーに情報を送信したことを意味し、したがって500エラーです。だから私が以前に尋ねたのは、ローカルホストかプロダクションですか? – Vickel

1

共有ホスティングで、あなたが最も可能性の高いローカルホスト環境では異なる相対パスを必要とする:

あなた'LL、ローカルホスト環境

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

が、共有ホスティング上で使用することができますあなたは左の列の上にあなたの口座にcPanelのメインページにこれを見つけるか、詳細はお使いのプロバイダーのヘルプデスクを呼び出すことができます

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

のようなもの、より具体的な供給する必要があります正しいパスに

+0

私はパスをG:\\ PleskVhosts \\ etcに変更しましたが、私はまだ500のエラーを受けています。私はかなり私のPHPセッションディレクトリに正常に書き込むように、このパスの形式が正しいと確信しています。 config/database.phpで、$ db ['default'] = arrayの場合、 'hostname'はどうなりますか?これが私の問題の一部であるかどうかはわかりません... – user7292978

+1

その可能性が最も高いのは "localhost"です。忘れないでください。共有サーバーに新しいデータベースを追加すると、ユーザーを追加する必要があります。そうでなければ、これは機能しません。あなたのコメントで言及したパスも相対パスではなく、パス – Vickel

+1

@ user7292978のようなウィンドウです.GoDaddy共有ホスティングアカウントを使用している場合、 'G:\ PleskVhosts \\ etc'は私には絶対に意味がありません。上記の「共有ホスティング」セクションの指示に従ってパスを試してみてください! – Sparky

関連する問題