You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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执行失败的关键原因。

分步解决方案

  1. 修正目录所有者与组
    将目标目录的所有者和组改为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/
    
  2. 设置正确的目录权限
    确保目录权限允许所有者读写执行,其他用户读执行:

    sudo chmod -R 755 /var/www/html/Anamorphiser/uploads/
    sudo chmod -R 755 /var/www/html/tmp/
    
  3. 验证PHP配置参数
    编辑对应版本的php.ini文件(通常路径为/etc/php/[版本号]/apache2/php.ini),检查以下参数:

    • upload_tmp_dir: 确认指向的临时目录属于www-data且权限为755
    • upload_max_filesize: 根据MP4文件大小调整(如50M)
    • post_max_size: 需大于upload_max_filesize(如60M)
      修改后重启Apache服务:
    sudo systemctl restart apache2
    
  4. SELinux权限排查(若启用)
    若服务器启用了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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 13:33:34