簡體   English   中英

服務器上的Yii2圖像上傳會引發意外的無效配置錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM