これは、PHP の文字エンコーディングが Windows の文字エンコーディングと異なるためです。簡体字中国語版の Windows では、通常、ファイル名の命名に gbk または gb2312 エンコーディングが使用されます。 PHP の非 ASCII 文字列変数の値のほとんどは utf8 エンコーディングを使用します (もちろん、このデフォルト値は変更できます...)。 $name 変数は、名前を付けて Windows ファイル システムに保存する前に、gbk エンコードに変換する必要があります。 mb_convert_encoding 関数を使用して、文字列のエンコーディングを変換できます。
PHP が utf8 でエンコードされていると仮定して、コード内の move_uploaded_file($tmp_name,'upload/' .$name) を move_uploaded_file($tmp_name,'upload/'.mb_convert_encoding($name)); に変更します。 上記は、yii でアップロードされたファイルの move_uploaded_file および rename 関数によって報告されるエラーを、関連する内容も含めて紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。