【问题标题】:Codeigniter File Upload Internal Server ErrorCodeigniter 文件上传内部服务器错误
【发布时间】:2016-12-14 08:25:38
【问题描述】:

当我尝试上传文件时,我收到 HTTP 500 错误。如果有人能指出我正确的方向。下面共有三个文件,Upload.php、upload_success.php 和upload_form.php。我已经正确设置了自动加载、配置、数据库文件。

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

【问题讨论】:

  • 您使用的是本地主机服务器还是生产服务器(如共享托管服务器)?
  • 可能是权限问题?
  • 可能是您的 htaccess 文件和文件夹权限 0777 用于上传文件夹,还请确保您已设置配置基本 url 不要在 config.php 中将其留空
  • 抱歉没有看到这些cmets。我正在使用共享托管服务器(godaddy)。在文件管理器中,我授予了位于根目录的“上传”文件夹的权限,并且我已经设置了我的基本 URL。谁能指导我访问我应该使用的 .htaccess 文件?
  • 你修复错误了吗?

标签: php codeigniter


【解决方案1】:

在共享主机上,您很可能需要与 localhost 环境不同的相对路径:

您可以在 localhost 环境中使用

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

但在共享主机上,您需要提供更具体的内容,例如

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

您可以在左侧栏中的帐户 cPanel 主页中找到此信息,或致电您的提供商帮助台以获取有关正确路径的更多信息

【讨论】:

  • 我将路径更改为 G:\\PleskVhosts\\etc,但仍然收到 500 错误。我相当肯定这种路径格式是正确的,因为我的 php 成功写入了我的会话文件夹。在 $db['default'] = array 的 config/database.php 中,'hostname' 应该是什么?我不确定这是否是我的问题的一部分......
  • 最有可能是“localhost”。不要忘记,在共享服务器上添加新数据库后,您还需要添加用户,否则这不起作用。您在评论中提到的路径也不是相对的,而是像路径这样的窗口
  • @user7292978,如果您使用的是 GoDaddy 共享主机帐户,那么 G:\\PleskVhosts\\etc 对我来说绝对没有意义。按照上面此答案的“共享托管”部分中的说明尝试路径!
  • 用户是唯一的,我将路径更改为:/PleskVhosts/domain.com/sub.domain.com/uploads 没有路径错误,但仍然出现 500 错误。我使用 Firefox 插件检查页面事件,_POST 方法无法写入数据库。
  • 函数 do_upload() 根本没有写入任何数据库,它正在将文件上传到服务器上的某个目录。检查文件夹权限。还要检查你现在是否真的在上传,但没有写入数据库(你还没有向我们展示的功能)
【解决方案2】:

下面的这段代码似乎有点奇怪。不确定是否会导致 500 tho。

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

请删除此行:

&lt;form action = "" method = ""&gt;

并将&lt;/form&gt; 替换为form_close()(结果将是相同的,只是为了代码的一致性)。

希望对你有帮助。

【讨论】:

  • 感谢您的回复,我按照您的建议进行了更改,但仍然收到 500 错误。当我在选择文件后单击上传时,页面加载并在 /upload/do_upload/ 上失败并给出 500 错误。还有其他想法吗?
  • 除了拼写错误的 php 代码之外,这不会引发 500 错误,w。此错误意味着您向服务器发送了一些无法处理的信息,因此出现 500 错误。这就是为什么我之前问过,你是在本地主机上还是在生产环境上?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-11
  • 2017-02-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多