[英]Yii2 Image upload on server throws an unexpected invalid configuration error
我對Yii2
相當Yii2
,並且剛開始在我的最新項目中使用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,
]);
}
}
您能指出我在這里做錯了什么嗎?
上載文件時出現“無效配置”錯誤,可能與“未安裝fileinfo PHP擴展名”有關。 。 嘗試在您的php.ini文件中啟用擴展名。 之后,您的驗證也應該起作用。 我希望這可以幫助某人。
缺少選項checkExtensionByMimeType
[['file'],
'file',
'maxFiles' => 10,
'extensions' => ['gif', 'jpg', 'png', 'jpeg', 'JPG', 'JPEG', 'PNG', 'GIF'],
'checkExtensionByMimeType'=>false, // <--- here!
'maxSize' => 1024 * 1024 * 2
],
];
}
...
我遇到了同樣的問題,我只通過在php.ini中啟用擴展來解決了這個問題。
Yii2文檔明確指出:
getMimeType()引發yii \\ base \\ InvalidConfigException
當未安裝fileinfo PHP擴展名且$ checkExtension為false時。
欲了解更多信息,請點擊這里
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.