php文件上传超时需修改php.ini中upload_max_filesize、post_max_size、max_execution_time和max_input_time四项参数,并重启web服务生效,同时nginx需配置client_max_body_size。

PHP文件上传超时,通常不是代码问题,而是服务器配置限制导致的。重点要改的是 php.ini 中的几个关键参数,而不是在PHP脚本里“修复”超时——脚本里加 set_time_limit() 对上传过程本身无效。
修改 php.ini 的核心上传超时参数
找到你正在使用的 php.ini 文件(可通过 phpinfo(); 查看“Loaded Configuration File”路径),修改以下四项:
-
upload_max_filesize:单个文件最大允许上传大小,例如:
upload_max_filesize = 128M -
post_max_size:整个 POST 请求体最大尺寸(必须 ≥ upload_max_filesize),例如:
post_max_size = 130M -
max_execution_time:脚本最大执行时间(单位秒),上传大文件时需延长,例如:
max_execution_time = 600(10分钟) -
max_input_time:PHP 等待输入数据(含上传)的最长时间(单位秒),例如:
max_input_time = 600
重启 Web 服务才能生效
改完 php.ini 后,必须重启 Web 服务器,否则配置不生效:
- Apache:运行
sudo systemctl restart apache2(Ubuntu/Debian)或sudo apachectl restart - Nginx + PHP-FPM:重启 PHP-FPM 和 Nginx,如
sudo systemctl restart php-fpm nginx - 本地开发环境(如 XAMPP、WAMP、MAMP):通过控制面板点击“Restart”按钮
检查是否生效(推荐用小脚本验证)
新建一个 phpinfo.php 文件,内容如下:
<?php echo "<h3>当前上传相关配置";
echo "upload_max_filesize: " . ini_get('upload_max_filesize') . "<br>";
echo "post_max_size: " . ini_get('post_max_size') . "<br>";
echo "max_execution_time: " . ini_get('max_execution_time') . "<br>";
echo "max_input_time: " . ini_get('max_input_time') . "<br>";
?>
访问该页面,确认输出值与 php.ini 修改一致。
补充说明:Nginx 或 Apache 的额外限制
如果用了 Nginx,还需检查其配置中是否有上传限制:
- Nginx:在
server或location块中添加client_max_body_size 128M;,然后重启 Nginx - Apache:默认无 body 大小限制,但若启用了
mod_security,需检查其规则是否拦截大 POST 请求
不复杂但容易忽略。改对位置、改对参数、记得重启,上传超时问题基本就解了。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











