2015-01-21 91 views
0

我正在尝试制作文件上传脚本,并且一直在努力解决此问题。无法上传大于8MB的文件

我已阅读并尝试所有与此相关的SO答案,但无济于事。

这是我在php中试过的。 INI:

file_uploads = On 
upload_max_filesize = 100M 
post_max_size = 100M 
memory_limit = 100M 

在Apache中,我有:

<Directory /var/www/uploads> 
php_value upload_max_filesize 10G 
php_value post_max_size 10G 
</Directory> 

我可能会尝试别的东西不想到现在。

我也想提一下,8MB以下的所有内容都没有问题上传。此外,超时也不是问题,因为上传仅在几秒钟内失败。

P.S.我正在使用Cloudflare。难道这是阻止我的上传?

+0

您是否通过在phpinfo()中创建了一个test.php文件来确认您的PHP.ini位置? – 2015-01-21 02:48:40

+0

'print_r($ _ FILES)'在失败时显示什么?这是一个托管帐户吗? – 2015-01-21 02:49:34

+0

我刚刚读过关于这个地方,我可以确认我正在编辑一个错误的php.ini。现在我收到此错误:无法加载资源:服务器响应的状态为413(请求实体太大)“ – Alex 2015-01-21 02:50:07

回答

1

通过在phpinfo()中创建一个test.php文件来确认你的PHP.ini位置。

接下来,检查您的Apache(LimitRequestBody指令*)和php.ini(upload_max_filesize)限制,因此通常将这些限制设置得更高。值以字节为单位。

Apache 2.0的默认上传大小为524288,位于php“include file”/etc/httpd/conf.d/php.conf中,可以覆盖此值,将以下指令放置在您的httpd.conf虚拟内存中主持人指令:

<Files *.php> 
LimitRequestBody 30000000 
</Files> 

(这个例子限制要求身体30M)

的Apache 1.3没有这个默认的,所以你通常只改变php.ini文件(的upload_max_filesize,post_max_size设置)值和config.ini(maxuploadfilesize)值。

最后,检查RequestReadTimeout设置。更在https://serverfault.com/a/260389

+0

我的确在编辑错误的php.ini,但我找到了正确的。我还补充说,在我的conf。现在我得到以下错误:'413请求实体太大。 请求的资源/上传。php 不允许请求POST请求数据,或者请求数量超过 请求超出容量限制.' 我正在使用Apache 2.4和PHP 5.5。 我设法上传了一个24MB的文件,但是有一个35MB的文件,我得到了那个错误。 – Alex 2015-01-21 02:55:50

+0

查看我的记录:选中RequestReadTimeout设置。更多在http://serverfault.com/a/260389 – 2015-01-21 03:10:07

+0

LimitRequestBody是答案,只是你的代码被限制为〜30MB,我直接复制它。现在我又增加了两个零,这很好。谢谢! – Alex 2015-01-23 17:01:55

0

有时EXCUTE时间发生问题, 使用参数或者set_time_limit(0);

检查的php.ini 函数ini_set( '的max_execution_time',0); // 0