CodeIgniter 2 image_lib->resize() error - отображает пустую страницу и не возвращает сообщение об ошибке
Я пытаюсь сделать что-то очень простое, но я не вижу, чтобы это сработало. Что бы это ни стоило, я в настоящее время тестирую на своем компьютере разработчика MAMP, но получаю те же результаты от промежуточного сервера (GoDaddy GridHost).
Вот что я хочу сделать:
- Загрузите изображение, указанное пользователем из формы.
- Создайте миниатюру загруженного изображения.
В моем примере есть дополнительный код базы данных, но скрипт вызывает "ошибки" при вызове 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 ответ
Вы установили свою среду приложения в начальной загрузке index.php? Стоит настроить его на разработку, если вы этого еще не сделали, это может привести к появлению ошибок, которые будут скрыты, если выбран режим тестирования / производства.
define('ENVIRONMENT', 'development');
Если это не помогает диагностировать проблему, в MAMP перейдите на вкладку Сервер, нажмите PHP, а затем Просмотреть журнал. Это откроет файл журнала ошибок PHP, который, мы надеемся, даст вам представление о том, что случилось.