CodeIgniter 2 image_lib-> resize () error - отображает пустую страницу и не возвращает сообщение об ошибке - PullRequest
0 голосов
/ 30 января 2012

Я пытаюсь сделать что-то очень простое, но я не вижу, как это работает.Что бы это ни стоило, я в настоящее время тестирую на своей машине разработчика MAMP, но получаю те же результаты от промежуточного сервера (GoDaddy GridHost).

Вот что я хочу сделать:

  1. Загрузить изображение, указанное пользователем из формы.
  2. Создать эскиз загруженного изображения.

В моем примере есть дополнительный код базы данных, но скрипт "выдает ошибки"msgstr "при вызове 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;
}

Взаимодействие с базой данных обрабатывается ORM DataMapper, который я включил для полноты, но я не думаю, что он обязательно имеет отношение к этой проблеме.Функция явно дает сбой при вызове:

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

1 Ответ

0 голосов
/ 02 февраля 2012

Вы установили свою среду приложения в начальной загрузке index.php?Стоит настроить его на разработку, если вы этого еще не сделали, это может сделать видимыми ошибки, которые будут скрыты, если задано тестирование / производство.

define('ENVIRONMENT', 'development');

Если это не помогает диагностировать проблему, в MAMP, перейдите на вкладку Сервер, нажмите PHP, а затем Просмотреть журнал.Это откроет файл журнала ошибок PHP, который, надеюсь, даст вам представление о том, что случилось.

...