PHP move_uploaded_file() 错误?

2022-08-30 12:44:47

我使用以下代码,它成功地在我的本地计算机上上传了文件。它在我的本地计算机上显示“已成功上传”。

// Upload file
$moved = move_uploaded_file($_FILES["file"]["tmp_name"], "images/" . "myFile.txt" );

if( $moved ) {
  echo "Successfully uploaded";         
} else {
  echo "Not uploaded";
}

但是当我在我的在线服务器上使用此代码时,它不会上传文件,而只是显示消息“未上传”。

我怎么知道问题是什么,如何让实际问题显示给用户?


答案 1

按如下方式编辑代码:

// Upload file
$moved = move_uploaded_file($_FILES["file"]["tmp_name"], "images/" . "myFile.txt" );

if( $moved ) {
  echo "Successfully uploaded";         
} else {
  echo "Not uploaded because of error #".$_FILES["file"]["error"];
}

它将为您提供以下错误代码值 1 到 8 之一:

UPLOAD_ERR_INI_SIZE = 值: 1;上传的文件超出了 php.ini 中的 upload_max_filesize 指令。

UPLOAD_ERR_FORM_SIZE = 值: 2;上载的文件超出了 HTML 表单中指定的MAX_FILE_SIZE指令。

UPLOAD_ERR_PARTIAL = 值: 3;上传的文件仅部分上传。

UPLOAD_ERR_NO_FILE = 值: 4;未上载任何文件。

UPLOAD_ERR_NO_TMP_DIR = 值: 6;缺少临时文件夹。PHP 5.0.3 中引入。

UPLOAD_ERR_CANT_WRITE = 值: 7;无法将文件写入磁盘。在 PHP 5.1.0 中引入。

UPLOAD_ERR_EXTENSION = 值: 8;PHP 扩展停止了文件上传。PHP没有提供一种方法来确定哪个扩展名导致文件上传停止;使用phpinfo()检查加载的扩展列表可能会有所帮助。


答案 2

试试这个:

$upload_dir = $_SERVER['DOCUMENT_ROOT'] . "/images/";

if (is_dir($upload_dir) && is_writable($upload_dir)) {
    // do upload logic here
} else {
    echo 'Upload directory is not writable, or does not exist.';
}

这将立即标记任何文件权限错误。


推荐