Linux下PHP如何实现文件上传功能
Linux下PHP文件上传需配置HTML表单enctype为multipart/form-data,编写脚本检查上传状态、验证文件类型与大小,移动至指定目录,并设目录权限755确保Web可写入。还需处理临时文件、错误码及安全性。
在Linux环境下用PHP做文件上传,其实是很多开发者绕不开的基本功。网上教程不少,但大多干巴巴地直接贴代码,有些关键细节反而没说清楚。今天我们就从一个实际可运行的例子出发,把整个流程拆开揉碎了讲一遍。

-
先搭一个HTML表单——让用户能选文件
这一步没什么高深的技术,关键就一句话:表单的
enctype属性必须设为multipart/form-data,不然文件数据没法正确传输。看看下面这个最简单的例子:File Upload 注意
action指向的是处理脚本upload.php,后面我们就要写这个核心文件。 -
PHP脚本——真正干活的逻辑都在这里
新建一个
upload.php,它要完成四件事:检查上传是否成功、验证文件类型和大小、判断是否重复、移动到指定目录。下面这段代码是标准写法,注释已经写得比较清楚了:500000) { // 限制500KB echo "Sorry, your file is too large."; $uploadOk = 0; } // 允许特定文件格式 if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif" ) { echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed."; $uploadOk = 0; } // 检查$uploadOk是否被置0 if ($uploadOk == 0) { echo "Sorry, your file was not uploaded."; } else { if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) { echo "The file ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " has been uploaded."; } else { echo "Sorry, there was an error uploading your file."; } } ?>几个容易踩的坑:文件大小限制单位是字节(500000 就是 500KB 约 0.5MB),
getimagesize()只能检查图片类文件,如果你允许其他格式记得把这部分逻辑改掉。另外move_uploaded_file一旦失败,多半是权限问题——这就引出第三步。 -
目录权限——光写代码不行,还得给Linux下个命令
在终端执行:
mkdir uploads chmod 755 uploads先创建
uploads/目录,然后给 755 权限(所有者可读写执行,其他人只读执行)。如果权限太严格(比如 700),Web 服务器用户(通常是www-data或nobody)就没法写入文件了。
这样一套流程跑下来,上传功能就基本成型了。当然实际生产环境还需要考虑更多细节:比如文件名冲突时自动重命名、限制文件存储路径不可被直接访问、对大文件做分片处理等等。但这些属于进阶话题,先把基础链路跑通,后面再逐步完善也不迟。


































