Yii2服务器上的图像上载会引发意外的无效配置错误

时间:2015-05-25 09:27:07

标签: php yii2

我是yii的新手,刚刚开始在我的最新项目中使用Yii2(我正在使用Yii2基本模板btw)。我现在的问题是上传图像处理,其中它能够进行多个图像上传。在我的本地主机上,没关系,图像保存成功以及随附的相应记录。然而,问题是当我将网站上传到我的测试服务器(使用PHP 5.4的Linux服务器)时,该过程引发了错误:

Invalid Configuration
An internal server error occurred.

Web服务器处理您的请求时出现上述错误。 如果您认为这是服务器错误,请与我们联系。谢谢。

我已经创建了必要的文件夹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,
        ]);
    }
}

你能指出我在这里做错了吗?

3 个答案:

答案 0 :(得分:1)

上传文件时出现

'无效配置'错误可能与'未安装fileinfo PHP扩展程序有关。'。尝试在php.ini文件中启用扩展。之后,您的验证也应该有效。我希望这可以帮助别人。

答案 1 :(得分:1)

缺少选项checkExtensionByMimeType

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

...

答案 2 :(得分:0)

我遇到了同样的问题,我只是在php.ini中启用扩展程序就解决了这个问题。

Yii2文档清楚地说:

  

getMimeType()抛出yii \ base \ InvalidConfigException
  当没有安装fileinfo PHP扩展并且$ checkExtension为false时。

有关详情,请点击here

希望这有帮助。