我有一个网站托管在我无法访问的PC上。我有一个上传表单,允许人们上传最大30MB的mp3文件。我的服务器端脚本是用PHP完成的。

每次我尝试上传文件时,都会收到一个错误,声称文件超过了允许的最大大小,因此我需要增加大小。我在网络上的研究建议更改。htaccess文件,我没有访问权限,所以这将不起作用。其他人建议我添加一个自定义的php.ini文件到我的根目录,但这并不奏效。还有其他建议吗?


当前回答

我也有同样的问题。我尝试了通常被建议的三种方法:

显然也 php . ini . htaccess

如果这能解决我的问题就没有了。我正在使用godaddy,遇到了一个建议的解决方案:

到网络主机,然后管理 在“软件”下选择“选择PHP版本” 选择切换到PHP选项在表格的右上角,字体颜色:蓝色 在最下面的部分,您可能会有upload_max_filesize = 2M 现在,请随意更改它 一定要点击保存按钮! 现在转到wp-admin面板,选择Media,然后添加

瞧!现在你有一个不同的最大上传文件大小:)

其他回答

答案有点不完整,你必须做3件事

在你的php安装的php.ini中(注意:取决于你是想要CLI, apache,还是nginx,找到正确的php.ini来操作。对于nginx,它通常位于/etc/php/7.1/fpm,其中7.1取决于你的版本。对于apache通常是/etc/php/7.1/apache2)

post_max_size=500M

upload_max_filesize=500M

memory_limit=900M

或者设置其他值。如果你安装了apache,请重新启动/重新加载apache;如果你使用nginx,请使用php-fpm。

我也有这个问题,并通过在/etc/nginx/nginx.conf中设置这个设置来修复它

client_max_body_size 0;

0,即无限。

此外,如果你有一个反向代理运行nginx,服务器也应该有这个设置(这是我在这里抛出的)

第一个选项:如果您有权限编辑php.ini文件,请使用此选项。

php.ini中的upload_max_filesize和post_max_size设置需要更改,以支持大于php默认允许大小的文件。

设置“upload_max_filesize”为需要上传的文件的最大大小。

Post_max_size应该设置为大于upload_max_filesize来处理文件和文件上传表单的表单post变量部分的大小。 如果在文件上传表单中同时上传多个文件,则post_max_size应设置为(upload_max_filesize *文件个数)+ post变量大小。

upload_max_filesize=30M
post_max_size=31M

不需要更新memory_limit和max_execution_time php设置,以防文件只是使用move_uploaded_file移动到文件上传php脚本中的最终路径。 但是如果文件上传脚本正在处理文件或将文件读取到一个变量或进行任何其他使用内存和时间等的处理,则应该设置memory_limit和max_execution_time。

将memory_limit设置为php脚本运行所需的内存量,将max_execution_time设置为运行脚本所需的时间(以秒为单位)。

memory_limit = 100M
max_execution_time = 120

修改php.ini后,请重新启动web服务器使其生效。

第二个选项:如果您没有权限更新php.ini全局设置或提高安全性,请使用此选项。

复制上传php脚本到一个新的子文件夹,点击“upload”并在新文件夹中创建一个文件“.user.ini”。还要确保更新文件上传表单的动作属性,以发布到“upload”文件夹下的新脚本。

将以下设置添加到新创建的文件中。“.user.ini”。

upload_max_filesize=30M
post_max_size=31M

;below are optional
memory_limit = 100M
max_execution_time = 120

“user_ini。php.ini设置可以更新为用户设置文件的另一个名称。

该选项提高了安全性,因为upload_max_filesize, post_max_size,memory_limit, max_execution_time仅对 新文件夹中的脚本,不会影响其他文件夹中的脚本的PHP设置,并防止坏脚本占用任何不必要的资源。

有关“。user.ini”设置的更多信息,请参阅下面的链接

https://www.php.net/manual/en/configuration.changes.modes.php

https://www.php.net/manual/en/ini.list.php

https://www.php.net/manual/en/configuration.file.per-user.php

重新启动web服务器,使新的.user.ini更改生效。

注意:

memory_limit和max_execution_time设置也可以在php上传脚本中使用ini_set和set_time_limit函数来设置,而不是更新php.ini文件。

如果使用此选项,则不需要更新ini文件中的memory_limit和max_execution_time设置。

将以下内容添加到php文件上传脚本的顶部

ini_set('memory_limit', '100M');
set_time_limit(120);

有了WAMP,一切都很简单

WAMP图标> PHP > PHP设置> upload_max_filesize = nM > n = (2M, 4M, 8M, 16M, 32M, 64M, 128M, 256M, 512M,或选择(自定义))。

服务自动重新加载。

但是,如果您确实没有访问服务器的权限,您可能想要尝试编写一个分块API。

下面是如何做到这一点的图片。

在花了几个小时后,我浏览了几乎所有的帖子,但运气不好。最后用这些步骤解决了问题。这可能是一个奇怪的解决方案,但对我来说很有效。

第一步:在/etc文件夹或/文件夹下运行cmd找到php.ini文件:

grep -rl "post_max_size" | xargs ls -lrth

这里我使用post_max_size关键字来搜索/etc文件夹中的“php.ini”文件,但在某些系统中,你可以在/var/www/html或/var/www/wordpress文件夹中找到这个文件。

我们在互联网上有多个帖子,如果php.ini文件不存在于WordPress文件夹中,那么你可以创建,但在我的情况下,这行不通。

步骤2:

编辑php.ini文件并像这样更改值。

post_max_size = 100M   
upload_max_filesize = 100M

在上面,您可以根据您的要求设置任何值。

步骤3:

重新启动httpd或Nginx或apache和PHP服务,或者根据设置,您可以重新启动web服务。

对我来说,httpd和php-fpm服务重启在centos 8中工作:

service httpd restart
service php-fpm restart