热搜:NVER node 开发 php

PHP上传文件$_FILES无法接受到信息

2024-07-28 15:15:01
PHP上传文件$_FILES无法接受到信息

各位好!

我写了一个小程序,用于上传视频文件。
在windows下测试的时候:
php5.5+apache2.4.9,php最大上传大小的两个配置已经设置为1024M
这时候上传任意视频都是没问题。

但是拿到linux上的时候:
php5.3+nginx,同样,php配置文件配置好,nginx.conf也将clinent_max_body_size设置为1024M。

但是从XP的系统上复制了一个名为“我是小海军0.mp4”的视频文件,140M左右,上传,$_FILES打印出来为空。
在我本机(win8)拷贝了两个视频文件,一个2M一个400M左右,都命名"我是小海军0.mp4",均上传成功,所以排除了中文名的问题。(我也在上传类中对中文名做了相应处理)。

现在实在想不出来了,最大上传大小限制可以排除,命名问题可以排除。那只能是文件的问题了,到底是啥问题呢。。

help...


回复讨论(解决方案)

看下是不是上传目录权限问题,有没有读写权限,改成775或者777试试

如果你没有设置上传文件格式先上传一个小文本文件测试一下。
包括代码(Linux下严格区分大小写)和Linux下权限问题(这个可能性最大了)
如果上传成功了那就是你上传文件大小限制出问题了。

上传文件的大小超过了 post_max_size 的限定

检查一下错误日志

post_max_size和upload_max_filesize都已经设置了1024M。nginx.conf也设置了clinent_max_body_size 1024M,不知道我这么设置对不对,网上找的方法。应该是没什么问题的。
问题的重点是:
400M左右的MP4可以上传,100M左右的MP4就上传不了,而且他们文件名是相同的。
我知道唯一的区别就是,100M的MP4文件是从XP系统的电脑上拷的,400M的MP4文件是我的电脑上的,win8。

因为不知道100M的文件的制作来源,也不清楚有什么可能的原因,所以不知道可以给出什么信息。
希望各位能够帮帮忙,如果需要一些其他的信息,我再发出来。

140那个文件,文件名改为纯数字字母,试下,排除下是不是编码问题。

140那个文件,文件名改为纯数字字母,试下,排除下是不是编码问题。



纯英文或者纯数字都不行,编码问题?

是用浏览器表单上传的吗?
XP系统有没有成功的文件?
从XP发字符串可以成功接收吗?

是用浏览器表单上传的吗?
XP系统有没有成功的文件?
从XP发字符串可以成功接收吗?


是的,表单提交,xp上也有成功的文件,发字符串也可以接受,那个不成功的文件,拿到我的机子上上传也没用。从XP上拷了两个文件过来,上传都接收不到

虽然你2014年问的问题,我还是要回答一下:
php 5.3  
php 5.5 
这2个版本对文件的上传 方法不是一样的哦