亚马逊EC2 Ubuntu实例的最大文件上传大小

11
我收到了一个亚马逊EC2 Ubuntu实例。我们需要创建一个包含上传客户端视频的Web应用程序。我在本地主机上创建了一个文件上传应用程序,它可以正常工作。但是当我将代码迁移到虚拟主机服务器时,我无法上传任何视频甚至超过2Mb的文件。我尝试将php.ini中的upload_max_filesize设置为50M,并将post_max_size设置为1000M
重启Apache很多次后,更新没有反映在我的phpinfo()信息中,但更改已保存在我的php.ini文件中。

enter image description here enter image description here

我怀疑给我的Amazon EC2实例有文件上传限制,但我不确定是否正确。如果我错了,我该如何覆盖以下配置?非常感谢您的任何帮助。
更新:
我甚至确保我正在编辑正确的配置文件。以下是屏幕截图:

enter image description here

enter image description here

更新:

我尝试按照链接中所说的去操作,但没有成功。我有很多关于链接的问题,例如:

  1. tomcatchesidesS3 bucket方面是什么意思?我将配置文件上传到了/var/www/html/.ebextensions。这样做对吗?

我的zzz.ini包含以下代码,并将其放置在/etc/php.d/zzz.ini中:

[php]
post_max_size = 1000M
upload_max_filesize = 50M

我的myconfigfile.config文件位于/var/www/html/.ebextensions/myconfigfile.config,包含以下代码:

files:
  "/etc/php.ini":
    mode: "000644"
    owner: root
    group: root
    source: http://mybucketname.s3.amazonaws.com/php.ini

  "/etc/php.d/zzz.ini":
    mode: "000644"
    owner: root
    group: root
    source: http://mybucketname.s3.amazonaws.com/zzz.ini

如何知道我的实例的存储桶名称?

我也将我的php.ini/etc/php/7.0/apache2/php.ini复制到/etc/php.ini并重新启动了Apache。仍然没有变化。我做得对吗?

更新:

我向给我提供EC2实例的人询问存储桶名称,她的回答是:

是的,您已获得访问EC2实例的权限。S3是亚马逊提供的另一种服务,EC2实例不会自动获得该服务。我们可以为您在S3中创建一个存储桶,但可能不再需要。

EC2实例大约有8GB的存储空间。您应该能够在EC2文件系统中存储多个大于2MB的视频并直接访问它们。

在软件投入生产时,使用S3进行文件上传是个好主意。但是,为了简化设置,请使用文件系统来存储视频。

更新:

运行以下命令:

php -i | grep -i max_size

产生:post_max_size => 1000M => 1000M
grep -ir "max_size" /etc/php/7.0/apache2/conf.d/

没有产生任何结果。

grep -ir "max_size" /etc/php/7.0/

产量。
/etc/php/7.0/fpm/php.ini:post_max_size = 1000M
/etc/php/7.0/apache2/php.ini:post_max_size = 1000M
/etc/php/7.0/cli/php.ini:post_max_size = 1000M

我的phpinfo()可以通过这个链接访问


1
你确定更新了正确的php.ini文件吗?需要更新的那个应该在phpinfo()页面的顶部附近提到。 - apokryfos
1
如果您正在运行FPM,请尝试使用service php7-frm restart(或php5-fpm或正确的版本) - apokryfos
1
如果这些方法仍然无法解决问题,最坏的情况下,您可以在代码中使用ini_set("post_max_size", "1000M") - apokryfos
请将 php -i | grep -i max_size 的输出添加到您的问题中。 - Tarun Lalwani
1
可以的。你能否运行以下命令 grep -ir "max_size" /etc/php/7.0/apache2/conf.d/ 并将结果分享在问题中?请勿在评论中分享结果。我认为你遇到的问题是另一个配置文件又更新了 max_size - Tarun Lalwani
显示剩余14条评论
3个回答

8

在修改了php.ini文件之后,我还需要重新启动FPM:

sudo systemctl restart php-fpm.service

然后才能重新启动Apache:

sudo systemctl restart httpd


针对我正在排除故障的 AWS EC2 托管的 WordPress 站点,这正是问题所在。除了 httpd,还必须重新启动 php 服务。谢谢! - Vicer

4

还需检查以下文件:

/etc/php.ini 或者

/etc/php-[版本号].ini

并且在这个文件中修改该值。如果这样还不够,请搜索以下内容:

/etc/php.d/aws.ini

实际上,AWS有可能覆盖了你的值。如果是这种情况,解决方案是创建一个名为 /etc/php.d/99uploadsize.ini 的文件,其中只包含以下内容:

[php]
upload_max_filesize = 100M
post_max_size = 100M

文件名99uploadsize.ini并不是强制的,但请记住该名称应在aws.ini之后按字母顺序排列,并位于同一目录中,因为这些ini文件是按此顺序读取的。即使示例与带有Apache的通用Ubuntu无关,但Amazon在此处提供了类似WP问题的解决方案:https://aws.amazon.com/it/premiumsupport/knowledge-center/wordpress-themes-2mb/

尝试了你说的。我创建了php.d文件,因为它不存在,并创建了zzz.ini文件,其中包含upload_max_filesize和post_max_size,但是在phpinfo中仍然没有更改。 - alyssaeliyah
有没有任何.htaccess设置php_value post_max_size 8M?但我认为如果你编写了应用程序,这不是情况。并且您是否像apokryfos建议的那样重新启动fpm?正确的命令是:重启php7.0-fpm。 - IgrewupwithSlackware
在哪里找到 .htaccess 文件?我尝试重启 php7.0-fpm,但它显示“命令未找到”。 - alyssaeliyah
@Eliyah,该命令取决于您的操作系统和php fpm版本(也可能是service php7.0-fpm restart或service php7-fpm restart)。 您可以在此处找到几乎详尽的列表: https://serverfault.com/questions/189940/how-do-you-restart-php-fpm 为了能够覆盖这些值,Apache中的.htaccess文件应该位于您主机的“根目录”中(/var/www/project-name/.htaccess或类似位置)。 - IgrewupwithSlackware
我在 /var/www/html 目录下没有 .htaccess 文件。通过查看 Putty,我确认它不存在。我清楚地记得自从登录 Amazon Ec2 实例以来,我没有使用过它。 - alyssaeliyah
显示剩余3条评论

1
抱歉各位,打扰了你们,是我的错。我为此苦恼了将近4天,结果发现在我的php.ini中只有一个语法错误。我使用本地主机上新安装的php更新了服务器的php.ini,在apache重启后,phpinfo()得到了更新。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接