我是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,
]);
}
}
你能指出我在这里做错了吗?
答案 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
希望这有帮助。