我在 Heroku 上的 NGINX(自定义 buildpack)上使用 PHP 5.4.12。上传 1.5MB 及更大尺寸的图像时遇到问题。这就是我正在做的事情:
PHP 上传到 Heroku(使用 iFrames 和 Ajax)
在 Heroku 上裁剪、调整大小和遮罩照片(使用 Imagick 命令行
convert
和composite
)将编辑后的图像移动到另一台服务器(因为 Heroku 不会让您长期存储东西,除非它们被 git 推送到服务器)。现在我正在为此使用我的测试环境/服务器,但我确信我最终会将它移到 S3 上。
任何小文件都可以通过。任何大于几兆的东西都会在(看起来像)上传期间挂断。相同的脚本在不同的服务器上工作得很好。
我通过php.ini
Heroku 上的文件进行了修改,重新编译了 slug,重新启动并重置了测功机。一个 phpinfo() 调用显示了增加的上传限制,但是脚本仍然以同样的方式失败。
我知道 Heroku 应该有 30 秒的脚本执行限制,但是,在我看来,PHP 上传首先发生在脚本开始执行之前。
我最初试图从不同的服务器执行上传脚本,但是,由于我正在向上传脚本发出 Ajax 请求,我遇到了 CORS(跨源资源共享)限制,并且我不喜欢 CORS 解决方法,因为有些浏览器不服从。
有什么想法可以让用户上传大于 1.5MB 的图像,在图像上运行我的裁剪/遮罩脚本,然后将图像存储在某个地方(例如 Amazon S3)?也许有人知道直接上传到亚马逊的方法,在 EC2 上编辑图像,然后转移到 S3?谢谢!
PS,正在寻找无 Flash 的解决方案,因为我正在尝试对移动设备友好。