CodeIgniter 2 image_lib-> resize()错误 - 呈现空白页面并且不返回错误消息

时间:2012-01-30 18:37:12

标签: php codeigniter thumbnails gd2 imagelibrary

我正在尝试做一些非常简单的事情,但我看不到让它发挥作用。对于它的价值,我目前正在我的MAMP开发机器上进行测试,但是从登台服务器(GoDaddy GridHost)获得相同的结果。

这就是我想要做的事情:

  1. 从表单上传用户指定的图像。
  2. 创建上传图片的缩略图。
  3. 我的示例中有一些额外的数据库代码,但 if(!$ this-> image_lib-> resize())调用的脚本“错误”。但是,它会导致整个应用程序退出,从而呈现空白页面。代码实际上从未进入if {}块。

    function _upload_image(&$location, &$image = NULL)
    {
        // Configure the initial full-sized image upload
        $upload_config = array(
            'upload_path' => "./uploads/users/{$this->viewer->id}/locations/{$location->id}/",
            'allowed_types' => 'jpg|jpeg|gif|bmp|png',
            'max_size' => 8192 // 8mb
        );
    
        $this->load->library('upload', $upload_config);
    
        // Upload failed
        if( ! $this->upload->do_upload('image'))
        {
            $this->errors = strip_tags($this->upload->display_errors());
            return FALSE;
        }
    
        // Get the uploaded file's metadata
        $data = $this->upload->data();
    
        // Change permissions of the uploaded file so that the image library can copy and resize it
        if(is_file($config['upload_path'] . $data['file_name']))
        {
            chmod($config['upload_path'] . $data['file_name'], 0777);
        }
    
        // If no existing image object was passed to this function, we are creating a brand new image
        if(is_null($image))
        {
            $image = new Image();
            $thumbnail = new Thumbnail();
        }
        else
        {
            $thumbnail = $image->thumbnail->get();  // Get the existing thumbnail
        }
    
        // Set the image object fields to save to the db
        $image->name = $data['file_name'];
        $image->mime_type = $data['file_type'];
        $image->extension = $data['file_ext'];
        $image->file_path = $data['file_path'];
        $image->full_path = $data['full_path'];
        $image->size = $data['file_size'];
        $image->width = $data['image_width'];
        $image->height = $data['image_height'];
    
        // Failed to save the image to the db
        if( ! $image->save())
        {
            $this->errors = array_merge($this->errors, array($image->error->string));
            return FALSE;
        }
    
        // Failed to save the location/image relationship in the db
        if( ! $location->save($image))
        {
            $this->errors = array_merge($this->errors, array($location->error->string));
            return FALSE;
        }
    
        // Configure options for the thumbnail
        $thumb_config = array(
            'image_library' => 'GD2',
            'source_image' => "./uploads/users/{$this->viewer->id}/locations/{$location->id}/{$image->name}",
            'create_thumb' => TRUE,
            'width' => 400,
            'height' => 300
        );
    
        $this->load->library('image_lib');
        $this->image_lib->initialize($thumb_config);
    
        // Failed to create the image thumbnail
        if( ! $this->image_lib->resize())
        {
            $this->errors = array_merge($this->errors, array($this->image_lib->display_errors()));
            return FALSE;
        }
    
        // Set the thumbnail object fields to save to the db
        $thumbnail->name = $data['raw_name'] . '_thumb' . $data['file_ext'];
        $thumbnail->file_path = $image->file_path;
        $thumbnail->full_path = $image->file_path . $thumbnail->name;
    
        // Failed to save the thumbnail to the db
        if( ! $thumbnail->save())
        {
            $this->errors = array_merge($this->errors, array($thumbnail->error->string));
            return FALSE;
        }
    
        // Failed to save the image/thumbnail relationship in the db
        if( ! $image->save($thumbnail))
        {
            $this->errors = array_merge($this->errors, array($image->error->string));
            return FALSE;
        }
    
        // Everything worked
        return TRUE;
    }
    

    数据库交互由DataMapper ORM处理,我为了完整性而包括在内,但我认为它不一定与此问题相关。该功能在通话时明显失败:

    if( ! $this->image_lib->resize())
    

1 个答案:

答案 0 :(得分:0)

您是否在index.php引导程序中设置了应用程序环境?如果你还没有将它设置为开发,那么这可能会使错误可见,如果设置为测试/生产,则会隐藏错误。

define('ENVIRONMENT', 'development');

如果这无法帮助诊断问题,请在MAMP中,转到“服务器”选项卡,单击“PHP”,然后单击“查看日志”。这将打开PHP错误日志文件,希望能让您知道该怎么做。