Php Yii2上传图像文件不保存文件,但我看到帖子数据OK

Php Yii2上传图像文件不保存文件,但我看到帖子数据OK,php,file-upload,yii2,image-uploading,Php,File Upload,Yii2,Image Uploading,我有下一张表格: $form = ActiveForm::begin(['id' => 'form-profile-edit', 'options' => ['enctype' => 'multipart/form-data']]); ?> <?= Html::activeFileInput($model, 'image_upload', ['class' => 'hidden', 'id' => 'file-avatar', 'accept'

我有下一张表格:

$form = ActiveForm::begin(['id' => 'form-profile-edit', 'options' => ['enctype' => 'multipart/form-data']]); ?>
     <?= Html::activeFileInput($model, 'image_upload', ['class' => 'hidden', 'id' => 'file-avatar', 'accept' => 'image/*', 'onchange' => 'javascript:this.form.submit()'])?>
<?php ActiveForm::end();
控制器中的此代码:

if ($model->load(Yii::$app->request->post())) {

            $file = \yii\web\UploadedFile::getInstance($model, 'image_upload');
            if ($file) {
                //print_r($_FILES);
                echo "<br>pathactual: " . getcwd();
                echo "<br>basename: " . $file->baseName;
                echo "<br>extension: " . $file->extension;
                echo "<br>name: " . $file->name;
                echo "<br>SaveUrl: " . Yii::$app->homeUrl . "assets/avatars/" . $file->baseName . "." . $file->extension;
                echo "<br>Error: " . $file->error; //This shows 0
                echo "Size: " . $file->size;

                $model->avatar = $file->baseName. "-big." . $file->extension;

                if($model->update(true, ["avatar"])){
                    echo "<br>avatar actualizado";
                    Yii::$app->getSession()->setFlash('profile-Msg-OK', Yii::t("app", "Generic_Changes_OK"));
                    //Guardamos el fichero del avatar
                    if($file->saveAs(Yii::$app->homeUrl . "assets/avatars/" . $file->baseName . "-big." . $file->extension)){
                        echo "<br>Imagen guardada correctamente.";
                    }else{
                        echo "<br>Imagen no guardada correctamente: " . $file->error; //This shows 1

                    }
             }

}
if($model->load(Yii::$app->request->post()){
$file=\yii\web\UploadedFile::getInstance($model,'image_upload');
如果($file){
//打印(美元文件);
echo“
路径实际值:”.getcwd(); echo“
basename:”.$file->basename; echo“
扩展名:“.$file->扩展名; echo“
名称:”.$file->name; echo“
SaveUrl:”.Yii::$app->homeUrl。“资产/化身/”$file->baseName。”。“$file->扩展名; echo“
错误:”.$file->Error;//这显示0 回显“大小:”.$文件->大小; $model->avatar=$file->baseName.-big..$file->extension; 如果($model->update(true,[“avatar”])){ echo“
化身现实行动”; Yii::$app->getSession()->setFlash('profile-Msg-OK',Yii::t(“app”,“Generic_Changes_-OK”); //阿凡达卫士 如果($file->saveAs(Yii::$app->homeUrl.“资产/化身/”$file->baseName.-big.“$file->扩展名)){ echo“
图像guardada更正。”; }否则{ echo“
图像无担保更正:”.$file->error;//这显示1 } } }
我可以看到$file对象正确、大小、tempName、baseName、扩展名..我将化身名称保存在$model->avatar中,然后进行更新。这很好

现在,我执行saveAs方法,但总是输入else,此时$file->errror值为1。我看到了UploadedFile文档,看到了:

$error integer描述此文件状态的错误代码 上传

搜索可能的状态,我发现1对应于:

上载\u错误\u INI\u大小值:1;上载的文件超过 在php.ini中上载\u max\u filesize指令

然后,我转到我的php.ini文件(我从phpinfo修改了它),我有40M

上传最大文件大小40M 40M

我用来测试的文件有14和16 KB。 你知道吗


如果有人需要更多信息,请发表评论

您需要更正保存路径

if($file->saveAs(Yii::$app->homeUrl . "assets/avatars/" . $file->baseName . "-big." . $file->extension))
这里

不是您想要的,因为它是应用程序的url,您需要

if($file->saveAs(Yii::getAlias('@webroot') . "/assets/avatars/" . $file->baseName . "-big." . $file->extension))

文件系统中的绝对路径

谢谢!我也尝试了getcwd(),但没有成功,这对我来说非常有用:)我快疯了。
Yii::$app->homeUrl
if($file->saveAs(Yii::getAlias('@webroot') . "/assets/avatars/" . $file->baseName . "-big." . $file->extension))