php上传文件失败解决方案

简介: php上传文件失败解决方案

原因1查找:大小限制


可以通过


var_dump($_FILES['变量名'])


来打印一下错误信息


例如:


  // 打印上传资源信息
  var_dump($_FILES['source']);
  // 判断是否上传成功
  if ($source['error'] !== UPLOAD_ERR_OK) {
    $GLOBALS['error_message'] = '上传音乐文件失败1';
    return;
  }


显示 error参数为1 , 即该文件上传相关的状态码。



那么这些参数是什么意思呢?


全部参数解释


PHP用超级全局变量数组$_FILES来记录文件上传相关信息的。



$_FILES[‘myFile’][‘name’]客户端上次文件的原始名称。


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


$_FILES[‘myFile’][‘size’]已上传文件的大小,单位为字节。


$_FILES[‘myFile’][‘tmp_name’]文件被上传后在服务端储存的临时文件名,一般是系统默认。


可以在php.ini的upload_tmp_dir 指定,但 用 putenv() 函数设置是不起作用的。


$_FILES[‘myFile’][‘error’]和该文件上传相关的状态码。


[‘error’] 是在 PHP 4.2.0 版本中增加的。下面是它的说明:(它们在PHP3.0以后成了常量)


$_FILES[‘myFile’][‘error’] 值


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; 没有文件被上传。 
值:5; 上传文件大小为0. 


解决


例如上文案例,错误是1 ,那么就是上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。


那么就去修改php.ini文件中的参数就可以了。


(php.ini就在php的安装目录下 和php.exe放在一起)



修改其他参数


如果有其他参数问题,修改其他参数就可以了


1.file_uploads=on/off
是否允许通过http方式上传文件
2.max_execution_time=30
允许脚本最大执行时间,超过这个时间就会报错
3.memory_limit=50M
设置脚本可以分配的最大内存量,防止失控脚本占用过多内存,此指令只有在编译时设置了
–enable-memory-limit标志的情况下才生效
4.upload_max_filesize=20M
允许上传文件的最大大小,此指令必须小于post_max_size
5.upload_tmp_dir
上传文件临时存放目录
6.post_max_size=30M
允许post方式可以接受最大大小


另外补充:文件上传结束后去向


文件被上传结束后,默认地被存储在了临时目录中,这时您必须将它从临时目录中删除或移动到其它地方,如果没有,则会被删除。


也就是不管是否上传成功,脚本执行完后临时目录里的文件肯定会被删除。


原因2查找:脚本停止运行


附:修改PHP上传文件大小限制的方法


在这里插入代码片一般的文件上传,除非文件很小.就像一个5M的文件,很可能要超过一分钟才能上传完.

但在php中,默认的该页最久执行时间为 30 秒.就是说超过30秒,该脚本就停止执行.


这就导致出现 无法打开网页的情况.这时我们可以修改 max_execution_time


在php.ini里查找


max_execution_time
• 1


默认是30秒.改为


max_execution_time = 0


0表示没有限制


原因3查找:post_max_size


修改 post_max_size 设定 POST 数据所允许的最大大小。此设定也影响到文件上传。


php默认的post_max_size 为2M.如果 POST 数据尺寸大于 post_max_size $_POST 和 $_FILES superglobals 便会为空.


查找 post_max_size .改为


post_max_size = 150M


很多人都会改了第二步.但上传文件时最大仍然为 8M.


为什么呢.我们还要改一个参数upload_max_filesize 表示所上传的文件的最大大小。


查找upload_max_filesize,默认为8M改为


upload_max_filesize = 100M
• 1


另外要说明的是,post_max_size 大于 upload_max_filesize 为佳.

相关文章
|
PHP Android开发
android通过http上传文件,服务器端用php写(原创)
android通过http上传文件,服务器端用php写(原创)
276 4
|
设计模式 数据库连接 PHP
PHP中的设计模式:提升代码的可维护性与扩展性在软件开发过程中,设计模式是开发者们经常用到的工具之一。它们提供了经过验证的解决方案,可以帮助我们解决常见的软件设计问题。本文将介绍PHP中常用的设计模式,以及如何利用这些模式来提高代码的可维护性和扩展性。我们将从基础的设计模式入手,逐步深入到更复杂的应用场景。通过实际案例分析,读者可以更好地理解如何在PHP开发中应用这些设计模式,从而写出更加高效、灵活和易于维护的代码。
本文探讨了PHP中常用的设计模式及其在实际项目中的应用。内容涵盖设计模式的基本概念、分类和具体使用场景,重点介绍了单例模式、工厂模式和观察者模式等常见模式。通过具体的代码示例,展示了如何在PHP项目中有效利用设计模式来提升代码的可维护性和扩展性。文章还讨论了设计模式的选择原则和注意事项,帮助开发者在不同情境下做出最佳决策。
|
SQL 存储 安全
PHP 与现代 Web 应用的安全挑战与解决方案
随着 Web 应用的发展,PHP 作为一种广泛使用的服务器端脚本语言,面临着越来越复杂的安全挑战。本文探讨了当前 PHP 开发中常见的安全问题,并提供了相应的解决方案,帮助开发者构建更安全可靠的 Web 应用。 【7月更文挑战第8天】
314 1
|
PHP
php开发实战分析(4):php调用封装函数包含文件路径自适应不同目录的解决方案($_SERVER[‘DOCUMENT_ROOT‘]与__DIR__魔术常量)
php开发实战分析(4):php调用封装函数包含文件路径自适应不同目录的解决方案($_SERVER[‘DOCUMENT_ROOT‘]与__DIR__魔术常量)
533 0
|
缓存 NoSQL PHP
Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出
本文深入探讨了Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出。文章还介绍了Redis在页面缓存、数据缓存和会话缓存等应用场景中的使用,并强调了缓存数据一致性、过期时间设置、容量控制和安全问题的重要性。
448 5
|
云安全 存储 小程序
PHP微信小程序解决方案PhpMall
PHP微信小程序解决方案PhpMall
455 0
|
应用服务中间件 Linux 网络安全
【Azure 应用服务】PHP应用部署在App Service for Linux环境中,上传文件大于1MB时,遇见了413 Request Entity Too Large 错误的解决方法
【Azure 应用服务】PHP应用部署在App Service for Linux环境中,上传文件大于1MB时,遇见了413 Request Entity Too Large 错误的解决方法
566 0
|
Linux PHP
【Azure 应用服务】PHP项目部署到App Service for Linux环境中,如何修改上传文件大小的限制呢?
【Azure 应用服务】PHP项目部署到App Service for Linux环境中,如何修改上传文件大小的限制呢?
298 0
|
缓存 NoSQL PHP
【PHP 开发专栏】Redis 作为 PHP 缓存的解决方案
【4月更文挑战第30天】本文探讨了Redis作为PHP缓存的优势,如高性能、丰富数据结构、数据持久化和分布式支持。通过安装配置Redis、选择PHP客户端、执行读写操作及制定缓存策略实现缓存。应用场景包括页面、数据和会话缓存。但需注意数据一致性、过期时间、容量和安全问题,以确保应用稳定和安全。Redis能有效提升PHP应用响应速度和处理能力。
399 2
|
应用服务中间件 Linux 网络安全
PHP应用部署在App Service for Linux环境中,上传文件大于1MB时,遇见了413 Request Entity Too Large 错误的解决方法
在Azure App Service for Linux上部署的PHP应用遇到上传文件超过1MB时出现413 Request Entity Too Large错误的解决之法
771 0

热门文章

最新文章