php上传文件损坏,PHP 上传文件故障排除

PHP 文件上传时出现问题时,就要在表单、后台处理程序和服务器配置上找原因。最常见的故障原因有:PHP 配置不正确、服务器上的相关目录没有写权限、表单编写有问题等。

如果在使用 PHP 上传时遇到问题,请参阅以下故障排除步骤:

检查表单

检查 method、enctype、MAX_FILE_SIZE 等是否正确,各表单项的 name 属性是否正确,另外

标签必须关闭,也不可以在任何时候用 JavaScript 禁用文件表单域。

检查服务器上的目录权限

确保服务器上的上传文件保存目录、上传临时目录(upload_tmp_dir)都有读写权限。而且服务器的磁盘空间充足。

对于 Windows,权限的问题有时会比较讨厌,需要这样设置:

上传临时文件目录(upload_tmp_dir):应用程序池对应用户拥有其修改权限;IUSR(Internet 来宾帐号)拥有其父目录的列出文件夹内容权限。

所以,一个比较方便的策略是,在任意一个地方建立一个 tmp 文件夹,为其设置 IUSR 的列出文件夹内容权限和应用程序池对应用户的修改权限;然后在其下建立一个 upload 文件夹,任其继承 tmp 的权限。最后,将 session.save_path 设在 tmp,upload_tmp_dir 设在 upload。

如果由于权限问题,PHP 无法写入上传临时目录,它不会报错而是直接改用系统的临时目录(Linux 下的 /tmp 或者 Windows 下的 %SYSTEMROOT%\Temp),造成 upload_tmp_dir 被忽略或未生效的假象。

一般来讲,我们都会使用 open_basedir 来限制 PHP 可以访问的文件系统范围。这时我们需要注意将上传临时目录也包含在其中。

open_basedir = "/home/wwwroot;/tmp"

如果以上步骤没有解决问题,则需要检查 PHP 配置文件 php.ini:

1. 启用上传

file_uploads = On

2. 设置上传文件大小限制

upload_max_filesize = 50M

3. 设置 POST 大小限制

post_max_size = 60M

需要设置为比 upload_max_filesize 大一些。

4. 设置 PHP 内存限制

memory_limit = 128M

需要设置为比 post_max_size 大一些

5. 设置 PHP 接受输入的时间限制

max_input_time = 60

这个时间是指 PHP 处理输入数据所花的时间,而非用户上传文件所花的时间。确保设置为默认的 60 秒即可。

6. 设置上传文件临时目录

upload_tmp_dir = '/tmp'

此项可以留空,系统会自动使用默认的临时目录。但如果使用了 open_basedir 限制 PHP 可以访问的目录范围,则会阻止 PHP 访问系统临时目录,造成上传失败。在这种情况下必须指定 upload_tmp_dir。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427723.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

xml序列号错误

xml序列号错误((XmlHelper.Deserialize))提示&#xff1a;XML 文档(1, 2)中有错误。{"不应有 <entryOrder xmlns>。"} 原因&#xff1a;1.缺少根目录&#xff08;<root>&#xff09;2.xml字段转换失败&#xff08;string->int&#xff09; ----------…

oracle 强制 断开,ORA-01092: ORACLE 例程终止。强行断开连接

dataguard服务器不能open&#xff0c;需要重启主服务器才能解决。如下&#xff1a;SQL> conn as sysdba;已连接到空闲例程。SQL> startup nomount;ORACLE 例程已经启动。Total System Global Area 1240186076 bytesFixed Size 453852 bytesVariable Si…

Mac远程连接服务器

方法一&#xff1a;ssh 方法二&#xff1a;commandK进入远程桌面&#xff0c;这种方式类似于windwos下的远程桌面 转载于:https://www.cnblogs.com/xiyuan2016/p/9020978.html

oracle v sql不存在,程序包oracle.sql不存在

今天项目在maven install 的时候报“程序包oracle.sql不存在&#xff0c;类TIMESTAMP找不到”的问题&#xff1a;plugins:maven-compiler-plugin:3.1:compile (default-compile) on project gdairport: Compilation failure: Compilation failure:...TimestameUtil.java:[7,18]…

关于windows10 CMD 的一些操作

之前接触过cmd的一些操作方法&#xff0c;比如用dir、tasklist等一些方法&#xff0c;但是用了会立马忘记&#xff0c;再用到时又要重新google&#xff0c;这着实让我头痛&#xff01;&#xff01;&#xff01; 今天又碰到一个关于改变目录的问题&#xff0c;又是纠结万分&…

oracle dblink 验证,Oracle DBLINK 简单使用

oracle在进行跨库访问时&#xff0c;可以通过创建dblink实现&#xff0c;今天就简单的介绍下如果创建dblink&#xff0c;以及通过dblink完成插入、修改、删除等操作首先了解下环境&#xff1a;在tnsnames.ora中配置两个数据库别名&#xff1a;orcl(用户名&#xff1a;wangyong …

六、表达式:前缀后缀

count为运算后的值。 转载于:https://www.cnblogs.com/Strugglinggirl/p/9026856.html

如何查询oracle的共享内存,[20190104]ipcs查看共享内存段.txt

[20190104]ipcs查看共享内存段.txt--//数据库启动异常,有时候会留下一些共享内存段没有清理,需要使用ipcrm清理.--//由于服务器上跑2个实例,必须选择正确的共享内存段,否则会导致别的数据库crash.--//在我工作中,这是遇到的第2次,做一些复习与整理:--//在linux下有一个命令sysr…

java获取xml参数

properties.load(DBUtility.class.getClassLoadrt()).getResourceAsStream(path);转载于:https://www.cnblogs.com/gjack/p/9033196.html

php开发是可视的吗,javascript,html_Jquery判断页面元素是否在浏览器的可视区域内,javascript,html,css,html5 - phpStudy...

Jquery判断页面元素是否在浏览器的可视区域内前端开发中,有时需要判断某个元素是否在浏览器的可视区域内,或者是否已经滚动出了可视区域.首先想到的便是javascript操作,原生方法自然可以,不过Jquery已经封装了一些属性,使用起来更方便些,我们这里就讨论这种Jquery的方式.假设此…

ubuntu中安装hadoop集群

hadoop是由java 语言编写的主从结构分布式计算存储架构 准备工作&#xff1a; 操作系统&#xff1a; Ubuntu16.04 软件安装包&#xff1a;jdk-8u171-linux-x64.tar.gz &#xff1b; hadoop-2.6.5.tar.gz 配置环境&#xff1a;3台虚拟机 master:192.168.122.10node1 …

php后端mysql,【后端开发】PHP如何处理MySQL死连接

本文主要介绍了PHP实现清除MySQL死连接的方法&#xff0c;通过定时执行php脚本实现针对mysql死链接的检查与清除功能&#xff0c;需要的朋友可以参考下。希望对大家有所帮助。连接的情况&#xff0c;主要表现为有过多的Sleep连接&#xff0c;并且Time时间很长&#xff0c;占满了…

5.14 js对象 函数 js操作document对象

---对象 var myObject {} /* 声明对象字面变量*/myObject点语法取值 赋值代码格式 var person { name : "zhangsan", age : 25, say :function(){ alert("说汉语"); } } 函数&#xff1a;有一定功能代码体的集合&#xff1b; 函数是由事件…

linux虚拟服务器新增磁盘怎么挂载,如何在vmware虚拟机Linux中增加硬盘的方法(教程)...

前期准备&#xff1a;创建虚拟硬盘1、关闭VM中正在运行的虚拟系统&#xff1b;2、在虚拟系统名称上点右键&#xff0d;》Virtual Machine Settings&#xff1b;3、在Hardware页点“Add”&#xff0d;》Add a hard disk&#xff0d;》Create a new virtual disk&#xff0d;》SC…

linux 内核3.8,[Beaglebone] BBB迁移到linux 3.8实时内核

8种机械键盘轴体对比本人程序员&#xff0c;要买一个写代码的键盘&#xff0c;请问红轴和茶轴怎么选&#xff1f;动机之前使用TI SDK提供的3.2标准内核&#xff0c;在和fpga进行高速通信时出现CPU 100%中断响应延迟严重(偶尔>50ms)造成数据丢包。为达到严格的中断响应速度(&…

软考解析:2017年上半年下午试卷

软考解析&#xff1a;2017年上半年下午试卷 第一题&#xff1a;数据流图 第二题&#xff1a;数据库设计 第三题&#xff1a;面向对象开发 真题 理论 类图 状态图 解题思路 第四题&#xff1a;算法与数据结构 第五题&#xff1a;设计模式与Java转载于:https://www.cnblogs.com/…

PHP配置开发环境

PHP配置开发环境 1.建3个文件夹&#xff1a; 2&#xff1a;找到apache的安装包 3&#xff1a;可以随意写 4&#xff1a; 5&#xff1a;找到你的apache的路径 6&#xff1a;注意&#xff1a;不要解压到当前文件夹 7&#xff1a;剪切替换名字修改为php 8&#xff1a;在apache >…

linux下tar包安装sudo命令,ubuntu12.04LTS安装gv-412-Linux-x86.tar.gz方法

折腾了2天多&#xff0c;终于装好了。操作系统Ubuntu 12.04 LTS (在win7系统下用ubuntu的windows安装工具安装的&#xff0c;有点类似双系统)gaussian view程序gv-412-Linux-x86.tar.gz(软件可以从这里找到一些Linux&WinGaussian&gview下载地址)特别提示下面的设计到的…

linux 端口tnpl,Linux和Windows端口占用情况查看

Linux &#xff1a;netstat-t tcp三次握手-u udp直传数据-l 监听-r 路由-n 显示ip端口号-p 进程一般的我们使用 netstat -tnpl | grep xxx 配合管道符来查找[rootVM_48_173_centos conf]# netstat -tnplActive Internet connections (only servers)Proto Recv-Q Send-Q Local A…

SpringAOP aspectJ ProceedingJoinPoint 获取当前方法

aspectJ切面通过ProceedingJoinPoint想要获取当前执行的方法&#xff1a; 错误方法&#xff1a; Signature s pjp.getSignature(); MethodSignature ms (MethodSignature)s; Method m ms.getMethod(); 这种方式获取到的方法是接口的方法而不是具体的实现类的方法&…