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

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


当前回答

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

第一步:在/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

其他回答

你需要检查三件事。

php.ini配置文件中的Upload_max_filesize, memory_limit和post_max_size。

所有这三个设置都限制了PHP可以提交和处理的数据的最大大小。

通常post_max_size和memory_limit需要大于upload_max_filesize。


所以你总共需要检查三个变量才能完全确定。

这些解决方案都不适合我!!(默认设置为32M)。问题在大多数情况下是max_allowed_packet

我在本地主机和使用MAMP工作。

这是解决方案;

1. 如果你没有我的。ini

Add

--max_allowed_packet=168435456

To

...\MAMP\bin\startMysql.sh

2. 如果你有my。ini

[mysqld]

Add

max_allowed_packet=100M

完成了!

由于全局更改有一定风险,因此我尝试为单个脚本big_file_upload.php增加最大上传值。出于某种原因,ini_set没有帮助。经过一番研究,我得出了这个结论。把它放在。htaccess(除非通过AccessFileName更改名称)

<If "%{REQUEST_URI} == '/subfolder/big_file_upload.php'" >
php_value upload_max_filesize 200M
php_value post_max_size 200M
</If>
<Else>
php_value upload_max_filesize 1M
php_value post_max_size 1M
</Else>

为我工作。

你需要在php.ini中设置upload_max_filesize和post_max_size的值:

; Maximum allowed size for uploaded files.
upload_max_filesize = 40M

; Must be greater than or equal to upload_max_filesize
post_max_size = 40M

修改php.ini文件后,需要重新启动HTTP服务器才能使用新的配置。

如果您不能更改php.ini,那么您就不走运了。您不能在运行时更改这些值;如果上传的文件大于php.ini中指定的值,那么在执行到调用ini_set时将会失败。

请参阅核心php.ini指令的描述。

你也可以使用ini_set函数(仅适用于PHP 5.3以下版本):

ini_set('post_max_size', '64M');
ini_set('upload_max_filesize', '64M');

就像@acme说的,在php 5.3及以上的设置是PHP_INI_PERDIR指令,所以他们不能使用ini_set设置。你可以使用user.ini代替。