Heroku の NGINX (カスタム ビルドパック) で PHP 5.4.12 を使用しています。サイズが 1.5 MB 以上の画像をアップロードするときに問題が発生します。これは私がやっていることです:
Heroku への PHP アップロード (iFrame と Ajax を使用)
写真の切り抜き、サイズ変更、マスク (Imagick コマンド ラインを使用し、Heroku
convert
で)composite
編集した画像を別のサーバーに移動します (Heroku では、git でサーバーにプッシュしない限り、長期間保存できないため)。現在、これにはテスト環境/サーバーを使用していますが、最終的にはこれを S3 に移行すると確信しています。
小さなファイルは問題なく処理されます。数メガよりも大きいものは、(どのように見えるか) アップロード時間中にハングアップします。まったく同じスクリプトが、別のサーバーでも問題なく機能します。
Heroku でファイルごとに変更しphp.ini
、スラッグを再コンパイルし、dyno を再起動してリセットしました。phpinfo() 呼び出しはアップロード制限の増加を示しますが、スクリプトは依然として同じように失敗します。
Heroku には 30 秒のスクリプト実行制限があるはずだと理解していますが、私が見たところ、スクリプトが最初に実行を開始する前に PHP のアップロードが行われます。
もともと別のサーバーからアップロード スクリプトを実行しようとしていましたが、アップロード スクリプトに Ajax リクエストを行っているため、CORS (クロス オリジン リソース共有) の制限に遭遇しました。一部のブラウザは従いません。
ユーザーが 1.5MB を超える画像をアップロードし、画像に対してクロッピング/マスキング スクリプトを実行し、その画像をどこかに保存できるようにする方法はありますか (Amazon S3 など)。おそらく誰かが Amazon に直接アップロードし、EC2 で画像を編集してから S3 に移動する方法を知っていますか? ありがとう!
PS、私はモバイル フレンドリーにしようとしているので、Flash を使用しないソリューションを探しています。