問題タブ [liipimaginebundle]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - Symfony2 画像操作
私は何時間も研究してきましたが、Symfony2 内で効果的な画像操作を行う方法を理解できません。Liip Imagine バンドルは最適な方法のようですが、開発中に適切に機能させることができないようです。
私が欲しいもの:
- アップロード時に、できれば%ベースの画像サイズを作成します(画像が巨大な場合、キャッシュ中にその人が待機することを望まないため、画像のリクエストを待機することをお勧めします)
- 画像に透かしを作成する
- 画像、サイズ変更、DI などからメタを取得します。
私は以下を見てきました:
- アップロード後にLiipImagineBundleを使用して画像のサイズを変更しますか? しかし、試してみると、ExifMetadataReader を使用するには PHP EXIF 拡張機能が必要であるというエラーが表示されます
- http://symfony.com/doc/master/bundles/LiipImagineBundle/index.htmlしかし、Twig で参照しようとすると
app_dev.php
、画像の前に が追加され、キャッシュされたバージョンを保存しようとしません。
構成:
試行された小枝:
編集!!
そこで、次のコードを使用して、貼り付けた上記の投稿からアップロードしようとしました。
そして今、この行$image = $dataManager->find($filter, $path)
は次のエラーをスローしています:
画像のアップロード/ファイル/pic_05052015_827_c6d4b.jpg の MIME タイプは、image/xxx got inode/x-empty である必要があります。
私はこの深いイメージのいくつかに少し戸惑っています.
symfony - ホスティング後のliipImagineBundleのトラブル
symfony2 では、liipImagineBundle を使用してその場でサムネイルを作成しています。以前はローカル サーバーで問題なく動作していましたが、共有サーバーのサイトをホストした後、問題が発生しました。hereおよびhereで説明されているのと同じ問題が発生しています。つまり、ソースが ではありませhttp://my_domain.com/media/cache/resolve/my_thumb/uploads/images/entry/DSC_04121.jpg
んhttp://out-of-the-nest.com/media/cache/my_thumb/uploads/images/entry/DSC_04121.jpg
。
この 2 つの質問のおかげで、問題の原因はわかりましたが、提案された解決策は役に立ちません。構成ファイルや php.ini にアクセスできません。filezilla でキャッシュのパーミッションを変更してみましたが、あまり変わりません。また、symfony2 のドキュメントに記載されているように、 app.php と app_dev.php で andumask(0002);
を使用してみましたが、役に立ちませんでした。umask(0000);
ここで何をすべきか本当にわかりません。誰か助けてもらえますか?
編集
結局のところ、許可の問題ではない可能性があります。Symfony は NotLoadableException: Source image not found in "/home/outoftheoo/app/../web/uploads/images/entry/DSC_04121.jpg"
、web フォルダーが存在しないために予想される a をスローします。ovh が期待するものであるため、名前を www に変更しました。私はliipを設定して、それが(とにかくだと思います)
config.yml にありますが、十分ではないようです
PS: 関係がある場合、問題の共有ホスティング サーバーは OVH によって提供されます。
編集 2
問題が見つかりました。config.yml
欠けていた:
php - 要件 AppKernel.php の symfony バンドル
symfony2 のベンダーバンドルを作成しました
バンドルが必要です (liip/imagine-bundle など)。
composer.php に必要な行を挿入します。
しかし、エラーがあります-バンドル「LiipImagineBundle」が存在しないか、有効になっていません。AppKernel.php ファイルの registerBundles() メソッドに追加するのを忘れたのではないでしょうか?
私は AppKernel.php に追加できますが、それは良い習慣ではないと思います。
ベンダー バンドルで要件バンドルを使用するにはどうすればよいですか?
php - S3 (AWS SDK v3) を使用して、LiipImagineBundle によって生成された画像をキャッシュする方法
S3 Cache Resolver を使用して、キャッシュされたサムネイルを S3 にアップロードしようとしていますが、LiipImagineBundle
奇妙な問題が発生しています。
AWS SDK v ^3.2 を使用しています。
私は Symfony2 を使用しており、私の で、クラスをservices.yml
構成し、それを使用してクライアントを作成しました。Aws\Credentials\Credentials
Aws\S3\S3Client
すべて正常に動作し、ファイルを S3 にアップロードできます。
の構成LiipImagineBundle
: AWS SDK 2 にのみ適用される構成ルールがあり、キャッシュ リゾルバーを使用して「誤検知」を引き起こすようです。LiipImagineBundle
aws_s3
少なくとも 3 つの異なる構成を試しました。
構成 1: AWS SDK 2 の場合
これにより例外がスローされます。
テンプレートのレンダリング中に例外がスローされました (「インスタンス プロファイル メタデータ サーバーから資格情報を取得中にエラーが発生しました。(cURL エラー 28: 1006 ミリ秒後に接続がタイムアウトしました ( http://curl.haxx.se/libcurl/c/を参照)。 libcurl-errors.html ))") src/AppBundle/Resources/views/Store/show.html.twig の 135 行目。
これは、認証情報を検索している AWS SDK によってスローされ、それらが見つかりません。
したがって、このアプローチは機能していないようです。
構成 2: 使用Aws\Credentials
(AWS SDK 3)
資格情報を に渡す方法S3Client
は、 のインスタンスを渡すことですAws\Credentials
。私はサービスを介してこれを行うので、他のサービスで同じ資格情報を再利用できます (そして、それを使用してファイルを S3 にアップロードするのと同じように機能します!):
とでconfig.yml
:
ご覧のとおり、Credentials
サービスをに渡しますが、次のLiipImagineBundle
エラーが発生します FROM Aws\ClientResolver
:
ClientResolver.php 行 296 の InvalidArgumentException: 「資格情報」に指定された構成値が無効です。Aws\Credentials\CredentialsInterface|array|bool|callableが必要ですが、文字列 '@shq.amazon.s3Credentials' (長さ = 25)を取得しました
資格情報: (Aws\Credentials\CredentialsInterface|array|bool|callable)
要求の署名に使用される資格情報を指定します。Aws\Credentials\CredentialsInterface オブジェクト、「キー」、「シークレット」、およびオプションの「トークン」キーの連想配列を提供して、
false
null 資格情報を使用するか、資格情報を作成するか null を返すために使用される呼び出し可能な資格情報プロバイダーを提供します。組み込みの認証情報プロバイダーのリストについては、Aws\Credentials\CredentialProvider を参照してください。認証情報が提供されていない場合、SDK は環境から認証情報をロードしようとします。
Credentials
によって参照されるクラスを渡す代わりに、@shq.amazon.s3Credentials
単純に文字列を渡すように見える@shq.amazon.s3Credentials
ためClientResolver
、渡されたパラメーターが正しくないことを正しく報告します。
したがって、この構成も機能しません。
設定 3: 配列を渡すS3Client
(AWS SDK 3)
をインスタンス化する 3 番目の方法はS3Client
、連想配列をハードコードされた資格情報に渡すことです。
だから私はこの構成を試しました:
しかし、今回は からエラーを受け取りました。これLiipImagineBundle
は、配列をパラメーターとして受け入れないようです。
ScalarNode.php 行 36 の InvalidTypeException: パス「liip_imagine.resolvers.cache_thumb_purchase.aws_s3.client_config.HERE_THERE_IS_DIRECTLY_MY_AWS_KEY」のタイプが無効です。 スカラーが必要ですが、配列を取得しました。
バンドルの構成ルールを更新する必要があると思いますが、そのようなことにはまだ自信がないので、これを行う方法がわかりません。
LiipImagineBundle
では、クラスを参照する文字列の代わりに / Symfony にクラスを渡すようにするにはどうすればよいCredentials
でしょうか? 私のせいですか、それとも何かが壊れていLiipImagineBundle
ますか?
(また、パスで「キー」という用語を使用する代わりに、私が理解できない奇妙なことは、「キー」の値、つまりを使用します。そのため、次のようなパスではなく、HERE_THERE_IS_DIRECTLY_MY_AWS_KEY
このようなパスを報告します-私のほうが正しいようですよね?)。liip_imagine.resolvers.cache_thumb_purchase.aws_s3.client_config.HERE_THERE_IS_DIRECTLY_MY_AWS_KEY
liip_imagine.resolvers.cache_thumb_purchase.aws_s3.client_config.key