AWS Elastic Beanstalk 文件上传不起作用

Posted

技术标签:

【中文标题】AWS Elastic Beanstalk 文件上传不起作用【英文标题】:AWS Elastic Beanstalk file upload not working 【发布时间】:2015-02-18 14:05:43 【问题描述】:

我们使用 AWS Elastic Beanstalk 托管 php 应用程序,其中包括无法正常工作的文件上传工具。我们已经 php.ini 将 tmp_upload_dir 设置为 /tmp 但它仍然不起作用。

我们刚刚从另一台服务器上移动了站点,那里一切正常,但 EB 似乎不想让我们上传文件。

这是我们正在使用的代码示例:

$imagePath = "/tmp/";

$allowedExts = array("gif", "jpeg", "jpg", "png", "GIF", "JPEG", "JPG", "PNG");
$temp = explode(".", $_FILES["img"]["name"]);
$extension = end($temp);

if ( in_array($extension, $allowedExts))
  
  if ($_FILES["img"]["error"] > 0)
    
         $response = array(
            "status" => 'error',
            "message" => 'ERROR Return Code: '. $_FILES["img"]["error"],
        );
        echo "Return Code: " . $_FILES["img"]["error"] . "<br>";
    
  else
    

      $filename = $_FILES["img"]["tmp_name"];
      list($width, $height) = getimagesize( $filename );

      move_uploaded_file($filename, $imagePath . $_FILES["img"]["name"]);

      $response = array(
        "status" => 'success',
        "url" => $imagePath.$_FILES["img"]["name"],
        "width" => $width,
        "height" => $height
      );

    
  
else
  
   $response = array(
        "status" => 'error',
        "message" => 'something went wrong',
    );
  

【问题讨论】:

【参考方案1】:

我也遇到了同样的问题,发现我们需要两个东西,都放到了.htaccess文件中:

 php_value upload_tmp_dir "/tmp"
 php_value upload_max_filesize 10M

上传目录必须归网络服务器所有,例如“webapp”或“daemon”,或可由该帐户写入。此外,最大文件大小必须适合您的上传。

在我的情况下,默认上传限制是 2M,我的文件是 4M。这导致了一个空的 $_FILES 数组。

【讨论】:

以上是关于AWS Elastic Beanstalk 文件上传不起作用的主要内容,如果未能解决你的问题,请参考以下文章

使用 AWS Elastic Beanstalk 在 AWS 上部署 Spring Boot 应用程序

在AWS Elastic Beanstalk上启用LDAP

如何在 AWS Elastic Beanstalk 上安装/运行 Spark Java 框架?

如何使用配置文件 (.ebextensions) 在 AWS Elastic Beanstalk 上安装 PHP IMAP 扩展?

在 aws elastic beanstalk 中创建 .ebextensions 文件夹

如何在 AWS Elastic Beanstalk 上的 Nodejs 应用程序上启用大文件的上传?