PHP增加上传文件大小限制

时间:2020-01-09 10:42:02  来源:igfitidea点击:

在Apache 2 UNIX/Linux Web服务器下,如何将上传文件的限制从2MB增加到10MB?
您的php安装限制了上传文件的大小。
默认值将限制您最大2 MB的上传文件大小。
您需要设置以下两个配置选项:

  • upload_max_filesize上传文件的最大大小。
  • memory_limit设置允许脚本分配的最大内存量(以字节为单位)。这有助于防止编写不良的脚本占用服务器上的所有可用内存。请注意,没有内存限制,请将此伪指令设置为-1。
  • post_max_size设置允许的帖子数据的最大大小。此设置也会影响文件上传。要上传大文件,此值必须大于upload_max_filesize。如果您的配置脚本启用了内存限制,则memory_limit也将影响文件上传。一般而言,memory_limit应该大于post_max_size。

有两种方法可以解决此问题。

方法1:编辑php.ini

编辑您的php.ini文件(通常存储在/etc/php.ini或者/etc/php.d/cgi/php.ini或者/usr/local/etc/php.ini中):

# vi /etc/php.ini

输出示例:

memory_limit = 32M
upload_max_filesize = 10M
post_max_size = 20M

保存并关闭文件。
重新启动apache或者lighttpd Web服务器:

# service httpd restart

或者

# service lighttpd restart

方法2:编辑.htaccess

在您的根目录中编辑.htaccess文件。
当您无权访问php.ini文件时,此功能很有用。
在此示例中,/home/httpd/html被视为根目录(您还可以在本地创建.htaccess文件,然后使用ftp/sftp/scp客户端上传该文件):

# vi /home/httpd/html/.htaccess

追加/修改设置如下:

php_value upload_max_filesize 10M
php_value post_max_size 20M
php_value memory_limit 32M

保存并关闭文件。

关于Suhosin的注释(可选)

默认情况下,这不是在许多服务器上安装的(最新版本的Debian,Ubuntu和FreeBSD会默认安装Suhosin)。
使用phpinfo()来确定是否启用了suhosin(创建test.php):

<?php
   phpinfo();
?>

如果您使用的Suhosin旨在保护您的服务器免受PHP应用程序中的许多众所周知的问题的影响,另一方面,还可以防止这些应用程序或者PHP核心本身中潜在的未知漏洞。
您需要编辑/etc/php.d/suhosin.ini以设置正确的内存和上传限制。
只要脚本不在safe_mode中运行,它们就可以随意将memory_limit更改为所需的任何值。

suhosin.memory_limit=32M