尝试上传大型文件到PHP应用程序时,可能会遇到大小限制的问题。还好,这个问题可以通过一些配置来解决。以下是关于如何调整PHP文件上传大小的详细说明。
修改php.ini
配置
在调整配置之前,我们需要明确每个配置项的目的。
首先,需要在php.ini
[php.ini
是PHP的主配置文件,它为PHP运行时环境提供了各种配置选项。通过这个文件,开发者和系统管理员可以调整PHP的行为以满足特定的需求或优化性能。php.ini
对PHP配置所起到的一些主要作用如下:
1. 错误报告:可以决定哪些类型的错误应该被报告并显示,以及哪些应该被记录或忽略。
2. 资源限制:例如,可以设置脚本的最大执行时间 ( max_execution_time
),上传文件的最大大小 ( upload_max_filesize
) 或者脚本可以使用的最大内存量 ( memory_limit
)。
3. 扩展管理:PHP有大量的扩展,可以通过php.ini
来启用或禁用它们。
4. 数据处理:如POST数据的最大尺寸 ( post_max_size
),以及全局变量、数据的自动转义等的配置。
5. 安全性:例如,禁用某些函数 ( disable_functions
),或者设置文件系统的权限限制。
6. 会话管理:例如,会话数据存储的位置、垃圾回收的概率、会话的生命周期等。
7. 文件上传设置:如第2条提到的上传文件大小,以及文件上传临时目录等。
8. 动态加载的扩展:可以设置哪些扩展在 PHP 启动时动态加载。
9. 日期和时区:可以设置 PHP 使用的默认时区 (date.timezone
)。
10. 连接和网络:例如,设置默认的socket超时时间或其他与网络相关的配置。php.ini
的功能不止于此。
总之,该文件提供了一个中心化的地方来配置PHP的各种行为和特性,使其更易于管理和调优。
另外,如果对PHP进行自定义配置,建议先备份原始的php.ini
文件,然后再进行修改。]文件中查找以下行:
upload_max_filesize = 8M
post_max_size = 10M
memory_limit = 20M
这些配置是PHP默认的文件上传大小设置。
以下是表单配置。确保上传的<form>
中有以下行。这是一个隐藏字段,用于限制表单上传的文件大小:
<input type="hidden" name="MAX_FILE_SIZE" value="500000">
对于Apache 2服务器
若使用的是Apache 2,需要修改/etc/httpd/conf.d/php.conf
中的LimitRequestBody
。例如,如果希望限制为5MB,可以将524288(512×1024)更改为5×1024×1024。
PHP执行时间
PHP的最大执行时间也可能会影响上传,但可以通过以下PHP代码临时设置它:
<?php
ini_set('max_execution_time', '600');
ini_set('post_max_size ', '100M');
ini_set('upload_max_filesize', '200M');
?>
更多php.ini
设置
在php.ini
中,还可以找到以下与文件上传相关的参数:
file_uploads = on ; 是否允许通过HTTP上传文件的开关。默认为on即是开
upload_tmp_dir ; 文件上传至服务器上存储临时文件的所在,如未指定则用系统默认的临时文件夹
upload_max_filesize = 200M ; 即允许上传文件大小的最大值。默认为2M
在Data Handling
区域,还有:
post_max_size = 100M ; 指通过表单post给PHP的所能接收的最大值,包括表单里的所有值。默认为8M
如果希望上传大于8M的文件,除了上述设置外,还需要关注以下参数:
max_execution_time = 600 ; 每个PHP页面运行的最大时间值(秒),默认30秒
max_input_time = 600 ; 每个PHP页面接收数据所需的最大时间,默认60秒
memory_limit = 8M ; 每个PHP页面所吃掉的最大内存,默认8M
示例配置
以下是一则成功配置的示例:
upload_max_filesize 300M
post_max_size 350M
memory_limit 400M
max_execution_time 600
max_input_time 600
这是一个适用于大型文件上传的配置示例。
注意:配置时,确保memory_limit
大于post_max_size
,而post_max_size
大于upload_max_filesize
。这是因为memory_limit
是脚本所能使用的最大内存量,post_max_size
是POST请求体的最大尺寸,而upload_max_filesize
是上传文件的最大尺寸。确保这三者的关系可以避免上传过程中的错误。
总而言之,通过适当配置PHP,还是可以轻松地上传大型文件的。