PHP脚本上传MP4文件至Ubuntu服务器失败求助
MP4文件上传失败问题排查与解决
问题背景
搭建的MP4处理网站在Windows XAMPP环境下可正常上传文件,迁移至Ubuntu服务器后,上传时提示An unknown error occured when uploading your file.,查看PHP错误日志发现move_uploaded_file(): Unable to move,已尝试修改目录权限和PHP临时目录但问题未解决。
核心问题定位
Ubuntu服务器上Apache服务以www-data用户身份运行,你之前将上传目录和临时目录的所有者设为ubuntu,导致PHP进程(Apache子进程)没有写入权限,这是move_uploaded_file执行失败的关键原因。
分步解决方案
修正目录所有者与组
将目标目录的所有者和组改为www-data,确保Apache进程拥有读写权限:sudo chown -R www-data:www-data /var/www/html/Anamorphiser/uploads/ sudo chown -R www-data:www-data /var/www/html/tmp/设置正确的目录权限
确保目录权限允许所有者读写执行,其他用户读执行:sudo chmod -R 755 /var/www/html/Anamorphiser/uploads/ sudo chmod -R 755 /var/www/html/tmp/验证PHP配置参数
编辑对应版本的php.ini文件(通常路径为/etc/php/[版本号]/apache2/php.ini),检查以下参数:upload_tmp_dir: 确认指向的临时目录属于www-data且权限为755upload_max_filesize: 根据MP4文件大小调整(如50M)post_max_size: 需大于upload_max_filesize(如60M)
修改后重启Apache服务:
sudo systemctl restart apache2SELinux权限排查(若启用)
若服务器启用了SELinux,会限制Apache写入目录,可先临时关闭测试:sudo setenforce 0若问题解决,添加永久规则允许Apache写入目标目录:
sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/Anamorphiser/uploads(/.*)?" sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/tmp(/.*)?" sudo restorecon -Rv /var/www/html/Anamorphiser/uploads/ sudo restorecon -Rv /var/www/html/tmp/
额外检查项
- 确认代码中
$target_file变量的路径拼写正确,不存在目录未创建的情况 - 检查Apache配置中的
LimitRequestBody参数,确保未限制过大的文件上传
内容的提问来源于stack exchange,提问作者Cosmo
相关产品推荐
相关产品推荐

