Yii2 Загрузка изображения на сервер приводит к непредвиденной неправильной ошибке конфигурации

1

Я новичок в yii и только начал использовать Yii2 в своем последнем проекте (я использую базовый шаблон Yii2). Моя проблема прямо сейчас - процесс загрузки изображения, в котором он способен загружать несколько изображений. На моем локальном хосте отлично, изображения успешно сохранены, а также соответствующая запись, сопровождающая его. Однако проблема заключается в том, что когда я загрузил веб-сайт на свой тестовый сервер (linux-сервер с PHP 5.4), процесс вызывает ошибку:

Invalid Configuration
An internal server error occurred.

Вышеупомянутая ошибка возникла, когда веб-сервер обрабатывал ваш запрос. Если вы считаете, что это ошибка сервера, свяжитесь с нами. Спасибо.

Я уже сделал необходимые папки, чтобы иметь 777 permissions и все равно это не сработает. Я также попытался создать запись без загрузки изображения, и, как и ожидалось, это было успешно, что указывает непосредственно на процесс загрузки, являющийся виновником.

Вот мой код для моей модели:

class UploadImageForm extends Model
{
    /**
     * @var UploadedFile|Null file attribute
     */

    public $file;

    /**
     * @return array the validation rules.
     */
    public function rules()
    {
        return [
            [['file'], 
              'file', 
              'maxFiles' => 10, 
              'extensions' => ['gif', 'jpg', 'png', 'jpeg', 'JPG', 'JPEG', 'PNG', 'GIF'],
              'maxSize' => 1024 * 1024 * 2
            ], // <--- here!
        ];
    }

}

Вот мой код для контроллера:

    public function actionCreate()
{
    $model = new Hotel();
    $uploadform = new UploadImageForm();
    $hotelcategory = HotelCategory::find()->all();

    if ($model->load(Yii::$app->request->post()) && $model->save()) {
        $new_id = $model->hotel_id;

        #let us save the images
        $uploadform->file = UploadedFile::getInstances($uploadform, 'file');
        if ($uploadform->file && $uploadform->validate()) {
            foreach ($uploadform->file as $file) {

                $file->saveAs(Yii::$app->basePath .'/web/uploads/images' ."/". $file->baseName . '.' . $file->extension);
                $hotel_images = new HotelImages;
                $hotel_images->hotel_image_name = $file->baseName . '.' . $file->extension;
                $hotel_images->hotel_image_hotel = $new_id;
                $hotel_images->hotel_image_url = Yii::$app->urlManager->createUrl('/uploads/images')."/". $file->baseName . '.' . $file->extension;
                $hotel_images->save();

            }
        }            
        return $this->redirect(['view', 'id' => $model->hotel_id]);
    } else {
        return $this->render('create', [
            'model' => $model,
            'uploadform' => $uploadform,
            'hotelcategory' => $hotelcategory,
        ]);
    }
}

Можете ли вы указать мне на то, что я делаю неправильно здесь?

  • 0
    Можете ли вы дать мне сообщение об ошибке?
  • 0
    Привет, извините, где я могу получить сообщение об ошибке? Кстати, ошибка на веб-странице показывает это: Неверная конфигурация Произошла внутренняя ошибка сервера. Вышеуказанная ошибка произошла, когда веб-сервер обрабатывал ваш запрос. Пожалуйста, свяжитесь с нами, если считаете, что это ошибка сервера. Спасибо.
Показать ещё 3 комментария
Теги:
yii2

3 ответа

1

Отсутствует опция checkExtensionByMimeType

        [['file'], 
          'file', 
          'maxFiles' => 10, 
          'extensions' => ['gif', 'jpg', 'png', 'jpeg', 'JPG', 'JPEG', 'PNG', 'GIF'],
          'checkExtensionByMimeType'=>false, // <--- here!
          'maxSize' => 1024 * 1024 * 2
        ], 
    ];
}

...

  • 0
    Было бы полезно иметь объяснение того, почему checkExtensionByMimeType решает эту проблему.
1

Ошибка "Неверная конфигурация" при загрузке файла может быть связана с "Расширение PHP в PHP не установлено". , Попробуйте включить расширение в файле php.ini. После этого ваша валидация также должна работать. Надеюсь, это поможет кому-то.

0

У меня была такая же проблема, и я решил ее, просто включив расширение в php.ini.

В документации Yii2 четко говорится:

getMimeType() throws yii\base\InvalidConfigException
когда расширение PHP PHP не установлено, а $ checkExtension - false.

Для получения дополнительной информации нажмите здесь

Надеюсь это поможет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню