我有一个网站托管在我无法访问的PC上。我有一个上传表单,允许人们上传最大30MB的mp3文件。我的服务器端脚本是用PHP完成的。
每次我尝试上传文件时,都会收到一个错误,声称文件超过了允许的最大大小,因此我需要增加大小。我在网络上的研究建议更改。htaccess文件,我没有访问权限,所以这将不起作用。其他人建议我添加一个自定义的php.ini文件到我的根目录,但这并不奏效。还有其他建议吗?
我有一个网站托管在我无法访问的PC上。我有一个上传表单,允许人们上传最大30MB的mp3文件。我的服务器端脚本是用PHP完成的。
每次我尝试上传文件时,都会收到一个错误,声称文件超过了允许的最大大小,因此我需要增加大小。我在网络上的研究建议更改。htaccess文件,我没有访问权限,所以这将不起作用。其他人建议我添加一个自定义的php.ini文件到我的根目录,但这并不奏效。还有其他建议吗?
当前回答
你需要检查三件事。
php.ini配置文件中的Upload_max_filesize, memory_limit和post_max_size。
所有这三个设置都限制了PHP可以提交和处理的数据的最大大小。
通常post_max_size和memory_limit需要大于upload_max_filesize。
所以你总共需要检查三个变量才能完全确定。
其他回答
我过去也遇到过同样的问题。我通过。htaccess文件修复了它
当你通过。htaccess修改php配置时,你应该把配置放进去 IfModule标签,否则内部服务器错误将产生。
这是一个例子,对我来说很管用:
<IfModule mod_php5.c>
php_value upload_max_filesize 40M
php_value post_max_size 40M
</IfModule>
如果你想了解更多,这是php参考资料。 http://php.net/manual/en/configuration.changes.php
我知道这个问题有很多答案,但在php.ini中,大多数变量只用于更改最大上传文件大小
由于有时用户更新了最大文件大小,但没有更新内存限制,导致中断导入过程。
因此,我在这里列出了所有需要更改的相关变量以及最大文件大小
max_execution_time memory_limit display_errors post_max_size upload_max_filesize max_input_time
注意:从现在开始,ini存储在这样的文件夹中 /etc/php/8.1/apache2/php.ini
我也有同样的问题。我尝试了通常被建议的三种方法:
显然也 php . ini . htaccess
如果这能解决我的问题就没有了。我正在使用godaddy,遇到了一个建议的解决方案:
到网络主机,然后管理 在“软件”下选择“选择PHP版本” 选择切换到PHP选项在表格的右上角,字体颜色:蓝色 在最下面的部分,您可能会有upload_max_filesize = 2M 现在,请随意更改它 一定要点击保存按钮! 现在转到wp-admin面板,选择Media,然后添加
瞧!现在你有一个不同的最大上传文件大小:)
现有的答案都有部分解决方案,所以这里是编译的答案:
解决方法一:编辑。htaccess文件 适用于Apache服务器
php_value upload_max_filesize 128M
php_value post_max_size 132M
php_value memory_limit 256M
php_value max_execution_time 300
php_value max_input_time 300
解决方案2:编辑wp-config.php文件 适合Wordpress应用程序
@ini_set( 'upload_max_filesize' , '128M' );
@ini_set( 'post_max_size', '132M');
@ini_set( 'memory_limit', '256M' );
@ini_set( 'max_execution_time', '300' );
@ini_set( 'max_input_time', '300' );
解决方案3:编辑php.ini文件 适用于nginx服务器或php.ini可修改的地方
upload_max_filesize = 128M
post_max_size = 132M
memory_limit = 256M
max_execution_time = 300
max_input_time = 300
可选:Nginx服务器 对于nginx增加最大文件上传大小限制(默认1MB),增加client_max_body_size 128M;HTTP或服务器块中的指令。
设置的重要说明:
upload_max_filesize – set this to a value > than your file size post_max_size – set this to a value > than your upload_max_filesize because overall size of the posted fields may be higher than the filesize memory_limit – set this to a value > than your file size because it limits the maximum amount of memory a script may consume max_execution_time – Maximum execution time of each script, in seconds. Set this to 0 (infinite) if your script requires long time to process file max_input_time - Maximum amount of time each script may spend parsing request data. Default is 60 seconds. Set this to -1 if scripts requires more time
最后,不要忘记重新启动服务器。适用于以下内容:
# if php-fpm is used for processing php
sudo service php7.4-fpm restart
# for nginx
sudo service nginx restart
# for apache
sudo service httpd restart
第一个选项:如果您有权限编辑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);