PHP

一次mp3文件无法上传的体验

2016-12-16  本文已影响49人  a81916596201

最近发生上传的mp3文件无法发送到微信端的问题。

打开服务器发现是服务器内存被占满了,删除了一部分mp3文件后,可还是不能发送。

到apache的error.log中查看发现tmp_name为空。也就是php对上传的mp3文件无法产生临时文件。

其中php对上传文件的处理:

$_FILES这个变量用与上传的文件参数设置,是一个多维数组

数组的用法就是 $_FILES['key']['key2'];

$_FILES['upfile']是你表单上传的文件信息数组,upfile是文件上传字段,在上传时由服务器根据上传字段设定.

$_FILES['upfile']包含了以下内容:

$_FILES['upfile']['name'] 客户端文件的原名称.

$_FILES['upfile']['type'] 文件的 MIME 类型,需要浏览器提供该信息的支持,例如"image/gif".

$_FILES['upfile']['size'] 已上传文件的大小,单位为字节.

$_FILES['upfile']['tmp_name'] 文件被上传后在服务端储存的临时文件名.

然后打印 $_FILES['upfile']['error'] 。显示为7.

查看错误表:

UPLOAD_ERR_OK

其值为 0,没有错误发生,文件上传成功。

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 4.3.10 和 PHP 5.0.3 引进。

UPLOAD_ERR_CANT_WRITE

其值为 7,文件写入失败。PHP 5.1.0 引进。

注意: 以上值在 PHP 4.3.0 之后变成了 PHP 常量。

通过 UPLOAD_ERR_CANT_WRITE 关键词查找。有一句解释是在我编译代码时发现/tmp空间已满,数据无法写入。那默认的临时文件夹在哪呢。

通过打印其他上传文件大小比较小的文件的临时文件夹路径发现在/tmp目录下。

然后我们去/tmp目录下  df -h 发现 。/tmp在一个系统文件夹为overflow的名字之下,并且空间大小只有1M。

对这种产生overflow临时系统文件夹,开启遮掩的服务的原因:意思表明,在系统空间不足时,紧急挂载/tmp目录到tmpfs文件系统。

解决方法:重启服务器 reboot。

上一篇下一篇

猜你喜欢

热点阅读