League\Flysystem\UnableToReadFile {#32287
#message: """
Unable to read file from location: https:/static.xx.fbcdn.net/images/emoji.php/v9/tbb/1/16/1f98b.png. HTTP 404 returned for "https://s3.fr-par.scw.cloud/s3.tousformateurs.fr/https%3A/static.xx.fbcdn.net/images/emoji.php/v9/tbb/1/16/1f98b.png".\n
\n
Code: NoSuchKey\n
Message: The specified key does not exist.\n
Type: \n
Detail:
"""
#code: 0
#file: "/app/vendor/league/flysystem/src/UnableToReadFile.php"
#line: 24
-previous: AsyncAws\S3\Exception\NoSuchKeyException {#29142
#message: """
HTTP 404 returned for "https://s3.fr-par.scw.cloud/s3.tousformateurs.fr/https%3A/static.xx.fbcdn.net/images/emoji.php/v9/tbb/1/16/1f98b.png".\n
\n
Code: NoSuchKey\n
Message: The specified key does not exist.\n
Type: \n
Detail: \n
"""
#code: 404
#file: "/app/vendor/async-aws/core/src/Response.php"
#line: 432
-response: Symfony\Component\HttpClient\Response\AsyncResponse {#32019
-client: Symfony\Component\HttpClient\CurlHttpClient {#958
-defaultOptions: array:31 [
"auth_basic" => null
"auth_bearer" => null
"query" => []
"headers" => []
"body" => ""
"json" => null
"user_data" => null
"max_redirects" => 20
"http_version" => null
"base_uri" => null
"buffer" => true
"on_progress" => null
"resolve" => []
"proxy" => null
"no_proxy" => null
"timeout" => null
"max_duration" => 0
"bindto" => "0"
"verify_peer" => true
"verify_host" => true
"cafile" => null
"capath" => null
"local_cert" => null
"local_pk" => null
"passphrase" => null
"ciphers" => null
"peer_fingerprint" => null
"capture_peer_cert_chain" => false
"crypto_method" => 33
"extra" => []
"auth_ntlm" => null
]
-logger: null
-multi: Symfony\Component\HttpClient\Internal\CurlClientState {#959 …}
}
-response: Symfony\Component\HttpClient\Response\CurlResponse {#32041
response_headers: array:6 [
0 => "HTTP/2 404 "
1 => "content-type: application/xml"
2 => "date: Tue, 07 Apr 2026 07:37:07 GMT"
3 => "x-amz-id-2: txg2b856867fe4e43cca15f-0069d4b423"
4 => "x-amz-request-id: txg2b856867fe4e43cca15f-0069d4b423"
5 => "content-length: 305"
]
http_code: 404
error: null
canceled: false
http_method: "GET"
user_data: null
max_duration: 0.0
start_time: 1775547427.466
original_url: "https://s3.fr-par.scw.cloud/s3.tousformateurs.fr/https%3A/static.xx.fbcdn.net/images/emoji.php/v9/tbb/1/16/1f98b.png"
pause_handler: Closure(float $duration) {#28194
class: "Symfony\Component\HttpClient\Response\CurlResponse"
use: {
$ch: CurlHandle {#31989 …}
$multi: Symfony\Component\HttpClient\Internal\CurlClientState {#959 …}
$execCounter: -9223372036854775506
}
}
url: "https://s3.fr-par.scw.cloud/s3.tousformateurs.fr/https%3A/static.xx.fbcdn.net/images/emoji.php/v9/tbb/1/16/1f98b.png"
content_type: "application/xml"
header_size: 206
request_size: 599
filetime: -1
ssl_verify_result: 0
redirect_count: 0
total_time: 0.283895
namelookup_time: 0.002496
connect_time: 0.003725
pretransfer_time: 0.017986
size_upload: 0.0
size_download: 305.0
speed_download: 1074.0
speed_upload: 0.0
download_content_length: 305.0
upload_content_length: 0.0
starttransfer_time: 0.283733
redirect_time: 0.0
redirect_url: null
primary_ip: "51.159.62.20"
certinfo: []
primary_port: 443
local_ip: "192.168.16.3"
local_port: 57652
http_version: 3
protocol: 2
ssl_verifyresult: 0
scheme: "https"
appconnect_time_us: 17832
connect_time_us: 3725
namelookup_time_us: 2496
pretransfer_time_us: 17986
redirect_time_us: 0
starttransfer_time_us: 283733
posttransfer_time_us: 18000
total_time_us: 283895
effective_method: "GET"
capath: "/etc/ssl/certs"
cainfo: "/etc/ssl/certs/ca-certificates.crt"
debug: """
* Too old connection (1156 seconds idle), disconnect it\n
* Connection 13 seems to be dead\n
* shutting down connection #13\n
* Hostname in DNS cache was stale, zapped\n
* Host s3.fr-par.scw.cloud:443 was resolved.\n
* IPv6: 2001:bc8:10::d, 2001:bc8:10::c, 2001:bc8:10::f\n
* IPv4: 51.159.62.20, 51.159.62.19, 51.159.62.18\n
* Trying [2001:bc8:10::d]:443...\n
* Immediate connect fail for 2001:bc8:10::d: Cannot assign requested address\n
* Trying [2001:bc8:10::c]:443...\n
* Immediate connect fail for 2001:bc8:10::c: Cannot assign requested address\n
* Trying [2001:bc8:10::f]:443...\n
* Immediate connect fail for 2001:bc8:10::f: Cannot assign requested address\n
* Trying 51.159.62.20:443...\n
* SSL reusing session with ALPN 'h2'\n
* ALPN: curl offers h2,http/1.1\n
* CAfile: /etc/ssl/certs/ca-certificates.crt\n
* CApath: /etc/ssl/certs\n
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384 / x25519 / RSASSA-PSS\n
* ALPN: server accepted h2\n
* Server certificate:\n
* subject: CN=s3.fr-par.scw.cloud\n
* start date: Mar 13 02:59:06 2026 GMT\n
* expire date: Jun 11 02:59:05 2026 GMT\n
* subjectAltName: host "s3.fr-par.scw.cloud" matched cert's "s3.fr-par.scw.cloud"\n
* issuer: C=US; O=Let's Encrypt; CN=R13\n
* SSL certificate verify ok.\n
* Certificate level 0: Public key type RSA (2048/112 Bits/secBits), signed using sha256WithRSAEncryption\n
* Certificate level 1: Public key type RSA (2048/112 Bits/secBits), signed using sha256WithRSAEncryption\n
* Certificate level 2: Public key type RSA (4096/152 Bits/secBits), signed using sha256WithRSAEncryption\n
* Connected to s3.fr-par.scw.cloud (51.159.62.20) port 443\n
* using HTTP/2\n
* [HTTP/2] [1] OPENED stream for https://s3.fr-par.scw.cloud/s3.tousformateurs.fr/https%3A/static.xx.fbcdn.net/images/emoji.php/v9/tbb/1/16/1f98b.png\n
* [HTTP/2] [1] [:method: GET]\n
* [HTTP/2] [1] [:scheme: https]\n
* [HTTP/2] [1] [:authority: s3.fr-par.scw.cloud]\n
* [HTTP/2] [1] [:path: /s3.tousformateurs.fr/https%3A/static.xx.fbcdn.net/images/emoji.php/v9/tbb/1/16/1f98b.png]\n
* [HTTP/2] [1] [content-type: application/xml]\n
* [HTTP/2] [1] [x-amz-content-sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855]\n
* [HTTP/2] [1] [x-amz-date: 20260407T073707Z]\n
* [HTTP/2] [1] [authorization: AWS4-HMAC-SHA256 Credential=SCW6XTRHZYNV3BHKVDH7/20260407/fr-par/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=693fcbc1eb23da9376c0e903dd257e82f3ad9b452f2ea52ae34a65cb39739688]\n
* [HTTP/2] [1] [content-length: 0]\n
* [HTTP/2] [1] [accept: */*]\n
* [HTTP/2] [1] [user-agent: Symfony HttpClient (Curl)]\n
* [HTTP/2] [1] [accept-encoding: gzip]\n
> GET /s3.tousformateurs.fr/https%3A/static.xx.fbcdn.net/images/emoji.php/v9/tbb/1/16/1f98b.png HTTP/2\r\n
Host: s3.fr-par.scw.cloud\r\n
content-type: application/xml\r\n
x-amz-content-sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\r\n
x-amz-date: 20260407T073707Z\r\n
authorization: AWS4-HMAC-SHA256 Credential=SCW6XTRHZYNV3BHKVDH7/20260407/fr-par/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=693fcbc1eb23da9376c0e903dd257e82f3ad9b452f2ea52ae34a65cb39739688\r\n
content-length: 0\r\n
Accept: */*\r\n
User-Agent: Symfony HttpClient (Curl)\r\n
Accept-Encoding: gzip\r\n
\r\n
* Request completely sent off\n
< HTTP/2 404 \r\n
< content-type: application/xml\r\n
< date: Tue, 07 Apr 2026 07:37:07 GMT\r\n
< x-amz-id-2: txg2b856867fe4e43cca15f-0069d4b423\r\n
< x-amz-request-id: txg2b856867fe4e43cca15f-0069d4b423\r\n
< content-length: 305\r\n
< \r\n
* Connection #14 to host s3.fr-par.scw.cloud left intact\n
"""
…16
}
-info: array:1 [
"canceled" => false
]
-passthru: null
-stream: null
-yieldedState: 2
-initializer: null
-shouldBuffer: null
-content: stream resource @4669
wrapper_type: "PHP"
stream_type: "TEMP"
mode: "w+b"
unread_bytes: 0
seekable: true
uri: "php://temp"
options: []
}
-offset: 305
-jsonData: null
}
-awsError: AsyncAws\Core\AwsError\AwsError {#3323
-code: "NoSuchKey"
-message: "The specified key does not exist."
-type: null
-detail: null
}
trace: {
/app/vendor/async-aws/core/src/Response.php:432 {
AsyncAws\Core\Response::{closure:AsyncAws\Core\Response::defineResolveStatus():431} …
› $this->resolveResult = static function () use ($exceptionClass, $httpResponse, $awsError): HttpException {
› return new $exceptionClass($httpResponse, $awsError);
› };
}
/app/vendor/async-aws/core/src/Response.php:448 {
AsyncAws\Core\Response->getResolveStatus(): bool …
› if (\is_callable($this->resolveResult)) {
› $this->resolveResult = ($this->resolveResult)();
› }
}
/app/vendor/async-aws/core/src/Response.php:179 {
AsyncAws\Core\Response->resolve(?float $timeout = null): bool …
›
› return $this->getResolveStatus();
› }
}
/app/vendor/async-aws/core/src/Result.php:69 {
AsyncAws\Core\Result->resolve(?float $timeout = null): bool …
› {
› return $this->response->resolve($timeout);
› }
}
/app/vendor/async-aws/core/src/Result.php:137 {
AsyncAws\Core\Result->initialize(): void …
›
› $this->resolve();
› $this->initialized = true;
}
/app/vendor/async-aws/s3/src/Result/GetObjectOutput.php:375 {
AsyncAws\S3\Result\GetObjectOutput->getBody(): ResultStream …
› {
› $this->initialize();
›
}
/app/vendor/league/flysystem-async-aws-s3/AsyncAwsS3Adapter.php:524 {
League\Flysystem\AsyncAwsS3\AsyncAwsS3Adapter->readObject(string $path): ResultStream …
› try {
› return $this->client->getObject($options)->getBody();
› } catch (Throwable $exception) {
}
/app/vendor/league/flysystem-async-aws-s3/AsyncAwsS3Adapter.php:154 {
League\Flysystem\AsyncAwsS3\AsyncAwsS3Adapter->read(string $path): string …
› {
› $body = $this->readObject($path);
›
}
/app/vendor/league/flysystem/src/Filesystem.php:76 {
League\Flysystem\Filesystem->read(string $location): string …
› {
› return $this->adapter->read($this->pathNormalizer->normalizePath($location));
› }
}
/app/src/Service/StorageService.php:65 {
App\Service\StorageService->read(string $path): string …
› try {
› return $this->uploadsStorage->read($path);
› } catch (FilesystemException|UnableToReadFile $exception) {
}
/app/src/Service/PDFService.php:173 {
App\Service\PDFService->convertImageToBase64(string $imgSrc, string $siteUrl): string …
› ? file_get_contents($this->projectDir.'/'.$path)
› : $this->storageService->read($path);
›
}
/app/src/Service/PDFService.php:260 {
App\Service\PDFService->formatHtmlForGotenberg(string $html): string …
› if (!str_starts_with($imgSrc, 'data:')) {
› $base64Src = $this->convertImageToBase64($imgSrc, $siteUrl);
› $img->setAttribute('src', $base64Src);
}
/app/src/Service/PDFService.php:147 {
App\Service\PDFService->prepareHtmlWithHeadersFooters(string $html): array …
› return [
› 'content' => $this->formatHtmlForGotenberg($contentHtml),
› 'header' => $this->formatHtmlForGotenberg($headerHtml),
}
/app/src/Service/PDFService.php:92 {
App\Service\PDFService->outputPDF(string $html): string …
› {
› $htmlParts = $this->prepareHtmlWithHeadersFooters($html);
›
}
/app/src/Controller/Front/TrainingController.php:120 {
App\Controller\Front\TrainingController->pdf(Training $training): Response …
›
› $response = $this->PDFService->outputPDF($html);
›
}
/app/vendor/symfony/http-kernel/HttpKernel.php:183 {
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Request $request, int $type = self::MAIN_REQUEST): Response …
› // call controller
› $response = $controller(...$arguments);
›
}
/app/vendor/symfony/http-kernel/HttpKernel.php:76 {
Symfony\Component\HttpKernel\HttpKernel->handle(Request $request, int $type = HttpKernelInterface::MAIN_REQUEST, bool $catch = true): Response …
› try {
› return $response = $this->handleRaw($request, $type);
› } catch (\Throwable $e) {
}
/app/vendor/symfony/http-kernel/Kernel.php:193 {
Symfony\Component\HttpKernel\Kernel->handle(Request $request, int $type = HttpKernelInterface::MAIN_REQUEST, bool $catch = true): Response …
› try {
› return $this->getHttpKernel()->handle($request, $type, $catch);
› } finally {
}
/app/vendor/runtime/frankenphp-symfony/src/Runner.php:38 {
Runtime\FrankenPhpSymfony\Runner->{closure:Runtime\FrankenPhpSymfony\Runner::run():33} …
› $sfRequest = Request::createFromGlobals();
› $sfResponse = $this->kernel->handle($sfRequest);
›
}
Runtime\FrankenPhpSymfony\Runner->{closure:Runtime\FrankenPhpSymfony\Runner::run():33}() {}
/app/vendor/runtime/frankenphp-symfony/src/Runner.php:45 {
Runtime\FrankenPhpSymfony\Runner->run(): int …
› do {
› $ret = \frankenphp_handle_request($handler);
›
}
/app/vendor/autoload_runtime.php:32 {
require_once …
› ->getRunner($app)
› ->run()
› );
}
/app/public/index.php:5 {
›
› require_once dirname(__DIR__).'/vendor/autoload_runtime.php';
›
arguments: {
"/app/vendor/autoload_runtime.php"
}
}
}
}
-location: "https:/static.xx.fbcdn.net/images/emoji.php/v9/tbb/1/16/1f98b.png"
-reason: """
HTTP 404 returned for "https://s3.fr-par.scw.cloud/s3.tousformateurs.fr/https%3A/static.xx.fbcdn.net/images/emoji.php/v9/tbb/1/16/1f98b.png".\n
\n
Code: NoSuchKey\n
Message: The specified key does not exist.\n
Type: \n
Detail: \n
"""
trace: {
/app/vendor/league/flysystem/src/UnableToReadFile.php:24 {
League\Flysystem\UnableToReadFile::fromLocation(string $location, string $reason = '', ?Throwable $previous = null): UnableToReadFile …
› {
› $e = new static(rtrim("Unable to read file from location: {$location}. {$reason}"), 0, $previous);
› $e->location = $location;
}
/app/vendor/league/flysystem-async-aws-s3/AsyncAwsS3Adapter.php:526 {
League\Flysystem\AsyncAwsS3\AsyncAwsS3Adapter->readObject(string $path): ResultStream …
› } catch (Throwable $exception) {
› throw UnableToReadFile::fromLocation($path, $exception->getMessage(), $exception);
› }
}
/app/vendor/league/flysystem-async-aws-s3/AsyncAwsS3Adapter.php:154 {
League\Flysystem\AsyncAwsS3\AsyncAwsS3Adapter->read(string $path): string …
› {
› $body = $this->readObject($path);
›
}
/app/vendor/league/flysystem/src/Filesystem.php:76 {
League\Flysystem\Filesystem->read(string $location): string …
› {
› return $this->adapter->read($this->pathNormalizer->normalizePath($location));
› }
}
/app/src/Service/StorageService.php:65 {
App\Service\StorageService->read(string $path): string …
› try {
› return $this->uploadsStorage->read($path);
› } catch (FilesystemException|UnableToReadFile $exception) {
}
/app/src/Service/PDFService.php:173 {
App\Service\PDFService->convertImageToBase64(string $imgSrc, string $siteUrl): string …
› ? file_get_contents($this->projectDir.'/'.$path)
› : $this->storageService->read($path);
›
}
/app/src/Service/PDFService.php:260 {
App\Service\PDFService->formatHtmlForGotenberg(string $html): string …
› if (!str_starts_with($imgSrc, 'data:')) {
› $base64Src = $this->convertImageToBase64($imgSrc, $siteUrl);
› $img->setAttribute('src', $base64Src);
}
/app/src/Service/PDFService.php:147 {
App\Service\PDFService->prepareHtmlWithHeadersFooters(string $html): array …
› return [
› 'content' => $this->formatHtmlForGotenberg($contentHtml),
› 'header' => $this->formatHtmlForGotenberg($headerHtml),
}
/app/src/Service/PDFService.php:92 {
App\Service\PDFService->outputPDF(string $html): string …
› {
› $htmlParts = $this->prepareHtmlWithHeadersFooters($html);
›
}
/app/src/Controller/Front/TrainingController.php:120 {
App\Controller\Front\TrainingController->pdf(Training $training): Response …
›
› $response = $this->PDFService->outputPDF($html);
›
}
/app/vendor/symfony/http-kernel/HttpKernel.php:183 {
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Request $request, int $type = self::MAIN_REQUEST): Response …
› // call controller
› $response = $controller(...$arguments);
›
}
/app/vendor/symfony/http-kernel/HttpKernel.php:76 {
Symfony\Component\HttpKernel\HttpKernel->handle(Request $request, int $type = HttpKernelInterface::MAIN_REQUEST, bool $catch = true): Response …
› try {
› return $response = $this->handleRaw($request, $type);
› } catch (\Throwable $e) {
}
/app/vendor/symfony/http-kernel/Kernel.php:193 {
Symfony\Component\HttpKernel\Kernel->handle(Request $request, int $type = HttpKernelInterface::MAIN_REQUEST, bool $catch = true): Response …
› try {
› return $this->getHttpKernel()->handle($request, $type, $catch);
› } finally {
}
/app/vendor/runtime/frankenphp-symfony/src/Runner.php:38 {
Runtime\FrankenPhpSymfony\Runner->{closure:Runtime\FrankenPhpSymfony\Runner::run():33} …
› $sfRequest = Request::createFromGlobals();
› $sfResponse = $this->kernel->handle($sfRequest);
›
}
Runtime\FrankenPhpSymfony\Runner->{closure:Runtime\FrankenPhpSymfony\Runner::run():33}() {}
/app/vendor/runtime/frankenphp-symfony/src/Runner.php:45 {
Runtime\FrankenPhpSymfony\Runner->run(): int …
› do {
› $ret = \frankenphp_handle_request($handler);
›
}
/app/vendor/autoload_runtime.php:32 {
require_once …
› ->getRunner($app)
› ->run()
› );
}
/app/public/index.php:5 {
›
› require_once dirname(__DIR__).'/vendor/autoload_runtime.php';
›
arguments: {
"/app/vendor/autoload_runtime.php"
}
}
}
}
League\Flysystem\UnableToReadFile {#32019
#message: """
Unable to read file from location: https:/static.xx.fbcdn.net/images/emoji.php/v9/tcd/1/16/1fab6.png. HTTP 404 returned for "https://s3.fr-par.scw.cloud/s3.tousformateurs.fr/https%3A/static.xx.fbcdn.net/images/emoji.php/v9/tcd/1/16/1fab6.png".\n
\n
Code: NoSuchKey\n
Message: The specified key does not exist.\n
Type: \n
Detail:
"""
#code: 0
#file: "/app/vendor/league/flysystem/src/UnableToReadFile.php"
#line: 24
-previous: AsyncAws\S3\Exception\NoSuchKeyException {#4382
#message: """
HTTP 404 returned for "https://s3.fr-par.scw.cloud/s3.tousformateurs.fr/https%3A/static.xx.fbcdn.net/images/emoji.php/v9/tcd/1/16/1fab6.png".\n
\n
Code: NoSuchKey\n
Message: The specified key does not exist.\n
Type: \n
Detail: \n
"""
#code: 404
#file: "/app/vendor/async-aws/core/src/Response.php"
#line: 432
-response: Symfony\Component\HttpClient\Response\AsyncResponse {#31989
-client: Symfony\Component\HttpClient\CurlHttpClient {#958
-defaultOptions: array:31 [
"auth_basic" => null
"auth_bearer" => null
"query" => []
"headers" => []
"body" => ""
"json" => null
"user_data" => null
"max_redirects" => 20
"http_version" => null
"base_uri" => null
"buffer" => true
"on_progress" => null
"resolve" => []
"proxy" => null
"no_proxy" => null
"timeout" => null
"max_duration" => 0
"bindto" => "0"
"verify_peer" => true
"verify_host" => true
"cafile" => null
"capath" => null
"local_cert" => null
"local_pk" => null
"passphrase" => null
"ciphers" => null
"peer_fingerprint" => null
"capture_peer_cert_chain" => false
"crypto_method" => 33
"extra" => []
"auth_ntlm" => null
]
-logger: null
-multi: Symfony\Component\HttpClient\Internal\CurlClientState {#959 …}
}
-response: Symfony\Component\HttpClient\Response\CurlResponse {#26833
response_headers: array:6 [
0 => "HTTP/2 404 "
1 => "content-type: application/xml"
2 => "date: Tue, 07 Apr 2026 07:37:07 GMT"
3 => "x-amz-id-2: txg70622b23207c4bad957b-0069d4b423"
4 => "x-amz-request-id: txg70622b23207c4bad957b-0069d4b423"
5 => "content-length: 305"
]
http_code: 404
error: null
canceled: false
http_method: "GET"
user_data: null
max_duration: 0.0
start_time: 1775547427.7583
original_url: "https://s3.fr-par.scw.cloud/s3.tousformateurs.fr/https%3A/static.xx.fbcdn.net/images/emoji.php/v9/tcd/1/16/1fab6.png"
pause_handler: Closure(float $duration) {#32885
class: "Symfony\Component\HttpClient\Response\CurlResponse"
use: {
$ch: CurlHandle {#28194 …}
$multi: Symfony\Component\HttpClient\Internal\CurlClientState {#959 …}
$execCounter: -9223372036854775496
}
}
url: "https://s3.fr-par.scw.cloud/s3.tousformateurs.fr/https%3A/static.xx.fbcdn.net/images/emoji.php/v9/tcd/1/16/1fab6.png"
content_type: "application/xml"
header_size: 206
request_size: 599
filetime: -1
ssl_verify_result: 0
redirect_count: 0
total_time: 0.320592
namelookup_time: 0.0
connect_time: 0.0
pretransfer_time: 0.000238
size_upload: 0.0
size_download: 305.0
speed_download: 951.0
speed_upload: 0.0
download_content_length: 305.0
upload_content_length: 0.0
starttransfer_time: 0.320447
redirect_time: 0.0
redirect_url: null
primary_ip: "51.159.62.20"
certinfo: []
primary_port: 443
local_ip: "192.168.16.3"
local_port: 57652
http_version: 3
protocol: 2
ssl_verifyresult: 0
scheme: "https"
appconnect_time_us: 0
connect_time_us: 0
namelookup_time_us: 0
pretransfer_time_us: 238
redirect_time_us: 0
starttransfer_time_us: 320447
posttransfer_time_us: 249
total_time_us: 320592
effective_method: "GET"
capath: "/etc/ssl/certs"
cainfo: "/etc/ssl/certs/ca-certificates.crt"
debug: """
* Re-using existing https: connection with host s3.fr-par.scw.cloud\n
* [HTTP/2] [3] OPENED stream for https://s3.fr-par.scw.cloud/s3.tousformateurs.fr/https%3A/static.xx.fbcdn.net/images/emoji.php/v9/tcd/1/16/1fab6.png\n
* [HTTP/2] [3] [:method: GET]\n
* [HTTP/2] [3] [:scheme: https]\n
* [HTTP/2] [3] [:authority: s3.fr-par.scw.cloud]\n
* [HTTP/2] [3] [:path: /s3.tousformateurs.fr/https%3A/static.xx.fbcdn.net/images/emoji.php/v9/tcd/1/16/1fab6.png]\n
* [HTTP/2] [3] [content-type: application/xml]\n
* [HTTP/2] [3] [x-amz-content-sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855]\n
* [HTTP/2] [3] [x-amz-date: 20260407T073707Z]\n
* [HTTP/2] [3] [authorization: AWS4-HMAC-SHA256 Credential=SCW6XTRHZYNV3BHKVDH7/20260407/fr-par/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=ca941b58729adc3ea7f31398907948c9fa3c69352f4061464cf850c727d48f94]\n
* [HTTP/2] [3] [content-length: 0]\n
* [HTTP/2] [3] [accept: */*]\n
* [HTTP/2] [3] [user-agent: Symfony HttpClient (Curl)]\n
* [HTTP/2] [3] [accept-encoding: gzip]\n
> GET /s3.tousformateurs.fr/https%3A/static.xx.fbcdn.net/images/emoji.php/v9/tcd/1/16/1fab6.png HTTP/2\r\n
Host: s3.fr-par.scw.cloud\r\n
content-type: application/xml\r\n
x-amz-content-sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\r\n
x-amz-date: 20260407T073707Z\r\n
authorization: AWS4-HMAC-SHA256 Credential=SCW6XTRHZYNV3BHKVDH7/20260407/fr-par/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=ca941b58729adc3ea7f31398907948c9fa3c69352f4061464cf850c727d48f94\r\n
content-length: 0\r\n
Accept: */*\r\n
User-Agent: Symfony HttpClient (Curl)\r\n
Accept-Encoding: gzip\r\n
\r\n
* Request completely sent off\n
< HTTP/2 404 \r\n
< content-type: application/xml\r\n
< date: Tue, 07 Apr 2026 07:37:07 GMT\r\n
< x-amz-id-2: txg70622b23207c4bad957b-0069d4b423\r\n
< x-amz-request-id: txg70622b23207c4bad957b-0069d4b423\r\n
< content-length: 305\r\n
< \r\n
* Connection #14 to host s3.fr-par.scw.cloud left intact\n
"""
…16
}
-info: array:1 [
"canceled" => false
]
-passthru: null
-stream: null
-yieldedState: 2
-initializer: null
-shouldBuffer: null
-content: stream resource @4674
wrapper_type: "PHP"
stream_type: "TEMP"
mode: "w+b"
unread_bytes: 0
seekable: true
uri: "php://temp"
options: []
}
-offset: 305
-jsonData: null
}
-awsError: AsyncAws\Core\AwsError\AwsError {#2743
-code: "NoSuchKey"
-message: "The specified key does not exist."
-type: null
-detail: null
}
trace: {
/app/vendor/async-aws/core/src/Response.php:432 {
AsyncAws\Core\Response::{closure:AsyncAws\Core\Response::defineResolveStatus():431} …
› $this->resolveResult = static function () use ($exceptionClass, $httpResponse, $awsError): HttpException {
› return new $exceptionClass($httpResponse, $awsError);
› };
}
/app/vendor/async-aws/core/src/Response.php:448 {
AsyncAws\Core\Response->getResolveStatus(): bool …
› if (\is_callable($this->resolveResult)) {
› $this->resolveResult = ($this->resolveResult)();
› }
}
/app/vendor/async-aws/core/src/Response.php:179 {
AsyncAws\Core\Response->resolve(?float $timeout = null): bool …
›
› return $this->getResolveStatus();
› }
}
/app/vendor/async-aws/core/src/Result.php:69 {
AsyncAws\Core\Result->resolve(?float $timeout = null): bool …
› {
› return $this->response->resolve($timeout);
› }
}
/app/vendor/async-aws/core/src/Result.php:137 {
AsyncAws\Core\Result->initialize(): void …
›
› $this->resolve();
› $this->initialized = true;
}
/app/vendor/async-aws/s3/src/Result/GetObjectOutput.php:375 {
AsyncAws\S3\Result\GetObjectOutput->getBody(): ResultStream …
› {
› $this->initialize();
›
}
/app/vendor/league/flysystem-async-aws-s3/AsyncAwsS3Adapter.php:524 {
League\Flysystem\AsyncAwsS3\AsyncAwsS3Adapter->readObject(string $path): ResultStream …
› try {
› return $this->client->getObject($options)->getBody();
› } catch (Throwable $exception) {
}
/app/vendor/league/flysystem-async-aws-s3/AsyncAwsS3Adapter.php:154 {
League\Flysystem\AsyncAwsS3\AsyncAwsS3Adapter->read(string $path): string …
› {
› $body = $this->readObject($path);
›
}
/app/vendor/league/flysystem/src/Filesystem.php:76 {
League\Flysystem\Filesystem->read(string $location): string …
› {
› return $this->adapter->read($this->pathNormalizer->normalizePath($location));
› }
}
/app/src/Service/StorageService.php:65 {
App\Service\StorageService->read(string $path): string …
› try {
› return $this->uploadsStorage->read($path);
› } catch (FilesystemException|UnableToReadFile $exception) {
}
/app/src/Service/PDFService.php:173 {
App\Service\PDFService->convertImageToBase64(string $imgSrc, string $siteUrl): string …
› ? file_get_contents($this->projectDir.'/'.$path)
› : $this->storageService->read($path);
›
}
/app/src/Service/PDFService.php:260 {
App\Service\PDFService->formatHtmlForGotenberg(string $html): string …
› if (!str_starts_with($imgSrc, 'data:')) {
› $base64Src = $this->convertImageToBase64($imgSrc, $siteUrl);
› $img->setAttribute('src', $base64Src);
}
/app/src/Service/PDFService.php:147 {
App\Service\PDFService->prepareHtmlWithHeadersFooters(string $html): array …
› return [
› 'content' => $this->formatHtmlForGotenberg($contentHtml),
› 'header' => $this->formatHtmlForGotenberg($headerHtml),
}
/app/src/Service/PDFService.php:92 {
App\Service\PDFService->outputPDF(string $html): string …
› {
› $htmlParts = $this->prepareHtmlWithHeadersFooters($html);
›
}
/app/src/Controller/Front/TrainingController.php:120 {
App\Controller\Front\TrainingController->pdf(Training $training): Response …
›
› $response = $this->PDFService->outputPDF($html);
›
}
/app/vendor/symfony/http-kernel/HttpKernel.php:183 {
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Request $request, int $type = self::MAIN_REQUEST): Response …
› // call controller
› $response = $controller(...$arguments);
›
}
/app/vendor/symfony/http-kernel/HttpKernel.php:76 {
Symfony\Component\HttpKernel\HttpKernel->handle(Request $request, int $type = HttpKernelInterface::MAIN_REQUEST, bool $catch = true): Response …
› try {
› return $response = $this->handleRaw($request, $type);
› } catch (\Throwable $e) {
}
/app/vendor/symfony/http-kernel/Kernel.php:193 {
Symfony\Component\HttpKernel\Kernel->handle(Request $request, int $type = HttpKernelInterface::MAIN_REQUEST, bool $catch = true): Response …
› try {
› return $this->getHttpKernel()->handle($request, $type, $catch);
› } finally {
}
/app/vendor/runtime/frankenphp-symfony/src/Runner.php:38 {
Runtime\FrankenPhpSymfony\Runner->{closure:Runtime\FrankenPhpSymfony\Runner::run():33} …
› $sfRequest = Request::createFromGlobals();
› $sfResponse = $this->kernel->handle($sfRequest);
›
}
Runtime\FrankenPhpSymfony\Runner->{closure:Runtime\FrankenPhpSymfony\Runner::run():33}() {}
/app/vendor/runtime/frankenphp-symfony/src/Runner.php:45 {
Runtime\FrankenPhpSymfony\Runner->run(): int …
› do {
› $ret = \frankenphp_handle_request($handler);
›
}
/app/vendor/autoload_runtime.php:32 {
require_once …
› ->getRunner($app)
› ->run()
› );
}
/app/public/index.php:5 {
›
› require_once dirname(__DIR__).'/vendor/autoload_runtime.php';
›
arguments: {
"/app/vendor/autoload_runtime.php"
}
}
}
}
-location: "https:/static.xx.fbcdn.net/images/emoji.php/v9/tcd/1/16/1fab6.png"
-reason: """
HTTP 404 returned for "https://s3.fr-par.scw.cloud/s3.tousformateurs.fr/https%3A/static.xx.fbcdn.net/images/emoji.php/v9/tcd/1/16/1fab6.png".\n
\n
Code: NoSuchKey\n
Message: The specified key does not exist.\n
Type: \n
Detail: \n
"""
trace: {
/app/vendor/league/flysystem/src/UnableToReadFile.php:24 {
League\Flysystem\UnableToReadFile::fromLocation(string $location, string $reason = '', ?Throwable $previous = null): UnableToReadFile …
› {
› $e = new static(rtrim("Unable to read file from location: {$location}. {$reason}"), 0, $previous);
› $e->location = $location;
}
/app/vendor/league/flysystem-async-aws-s3/AsyncAwsS3Adapter.php:526 {
League\Flysystem\AsyncAwsS3\AsyncAwsS3Adapter->readObject(string $path): ResultStream …
› } catch (Throwable $exception) {
› throw UnableToReadFile::fromLocation($path, $exception->getMessage(), $exception);
› }
}
/app/vendor/league/flysystem-async-aws-s3/AsyncAwsS3Adapter.php:154 {
League\Flysystem\AsyncAwsS3\AsyncAwsS3Adapter->read(string $path): string …
› {
› $body = $this->readObject($path);
›
}
/app/vendor/league/flysystem/src/Filesystem.php:76 {
League\Flysystem\Filesystem->read(string $location): string …
› {
› return $this->adapter->read($this->pathNormalizer->normalizePath($location));
› }
}
/app/src/Service/StorageService.php:65 {
App\Service\StorageService->read(string $path): string …
› try {
› return $this->uploadsStorage->read($path);
› } catch (FilesystemException|UnableToReadFile $exception) {
}
/app/src/Service/PDFService.php:173 {
App\Service\PDFService->convertImageToBase64(string $imgSrc, string $siteUrl): string …
› ? file_get_contents($this->projectDir.'/'.$path)
› : $this->storageService->read($path);
›
}
/app/src/Service/PDFService.php:260 {
App\Service\PDFService->formatHtmlForGotenberg(string $html): string …
› if (!str_starts_with($imgSrc, 'data:')) {
› $base64Src = $this->convertImageToBase64($imgSrc, $siteUrl);
› $img->setAttribute('src', $base64Src);
}
/app/src/Service/PDFService.php:147 {
App\Service\PDFService->prepareHtmlWithHeadersFooters(string $html): array …
› return [
› 'content' => $this->formatHtmlForGotenberg($contentHtml),
› 'header' => $this->formatHtmlForGotenberg($headerHtml),
}
/app/src/Service/PDFService.php:92 {
App\Service\PDFService->outputPDF(string $html): string …
› {
› $htmlParts = $this->prepareHtmlWithHeadersFooters($html);
›
}
/app/src/Controller/Front/TrainingController.php:120 {
App\Controller\Front\TrainingController->pdf(Training $training): Response …
›
› $response = $this->PDFService->outputPDF($html);
›
}
/app/vendor/symfony/http-kernel/HttpKernel.php:183 {
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Request $request, int $type = self::MAIN_REQUEST): Response …
› // call controller
› $response = $controller(...$arguments);
›
}
/app/vendor/symfony/http-kernel/HttpKernel.php:76 {
Symfony\Component\HttpKernel\HttpKernel->handle(Request $request, int $type = HttpKernelInterface::MAIN_REQUEST, bool $catch = true): Response …
› try {
› return $response = $this->handleRaw($request, $type);
› } catch (\Throwable $e) {
}
/app/vendor/symfony/http-kernel/Kernel.php:193 {
Symfony\Component\HttpKernel\Kernel->handle(Request $request, int $type = HttpKernelInterface::MAIN_REQUEST, bool $catch = true): Response …
› try {
› return $this->getHttpKernel()->handle($request, $type, $catch);
› } finally {
}
/app/vendor/runtime/frankenphp-symfony/src/Runner.php:38 {
Runtime\FrankenPhpSymfony\Runner->{closure:Runtime\FrankenPhpSymfony\Runner::run():33} …
› $sfRequest = Request::createFromGlobals();
› $sfResponse = $this->kernel->handle($sfRequest);
›
}
Runtime\FrankenPhpSymfony\Runner->{closure:Runtime\FrankenPhpSymfony\Runner::run():33}() {}
/app/vendor/runtime/frankenphp-symfony/src/Runner.php:45 {
Runtime\FrankenPhpSymfony\Runner->run(): int …
› do {
› $ret = \frankenphp_handle_request($handler);
›
}
/app/vendor/autoload_runtime.php:32 {
require_once …
› ->getRunner($app)
› ->run()
› );
}
/app/public/index.php:5 {
›
› require_once dirname(__DIR__).'/vendor/autoload_runtime.php';
›
arguments: {
"/app/vendor/autoload_runtime.php"
}
}
}
}
League\Flysystem\UnableToReadFile {#31989
#message: """
Unable to read file from location: https:/static.xx.fbcdn.net/images/emoji.php/v9/t99/1/16/1f33a.png. HTTP 404 returned for "https://s3.fr-par.scw.cloud/s3.tousformateurs.fr/https%3A/static.xx.fbcdn.net/images/emoji.php/v9/t99/1/16/1f33a.png".\n
\n
Code: NoSuchKey\n
Message: The specified key does not exist.\n
Type: \n
Detail:
"""
#code: 0
#file: "/app/vendor/league/flysystem/src/UnableToReadFile.php"
#line: 24
-previous: AsyncAws\S3\Exception\NoSuchKeyException {#30280
#message: """
HTTP 404 returned for "https://s3.fr-par.scw.cloud/s3.tousformateurs.fr/https%3A/static.xx.fbcdn.net/images/emoji.php/v9/t99/1/16/1f33a.png".\n
\n
Code: NoSuchKey\n
Message: The specified key does not exist.\n
Type: \n
Detail: \n
"""
#code: 404
#file: "/app/vendor/async-aws/core/src/Response.php"
#line: 432
-response: Symfony\Component\HttpClient\Response\AsyncResponse {#28194
-client: Symfony\Component\HttpClient\CurlHttpClient {#958
-defaultOptions: array:31 [
"auth_basic" => null
"auth_bearer" => null
"query" => []
"headers" => []
"body" => ""
"json" => null
"user_data" => null
"max_redirects" => 20
"http_version" => null
"base_uri" => null
"buffer" => true
"on_progress" => null
"resolve" => []
"proxy" => null
"no_proxy" => null
"timeout" => null
"max_duration" => 0
"bindto" => "0"
"verify_peer" => true
"verify_host" => true
"cafile" => null
"capath" => null
"local_cert" => null
"local_pk" => null
"passphrase" => null
"ciphers" => null
"peer_fingerprint" => null
"capture_peer_cert_chain" => false
"crypto_method" => 33
"extra" => []
"auth_ntlm" => null
]
-logger: null
-multi: Symfony\Component\HttpClient\Internal\CurlClientState {#959 …}
}
-response: Symfony\Component\HttpClient\Response\CurlResponse {#9243
response_headers: array:6 [
0 => "HTTP/2 404 "
1 => "content-type: application/xml"
2 => "date: Tue, 07 Apr 2026 07:37:08 GMT"
3 => "x-amz-id-2: txg4bec1d49c80e40528ad1-0069d4b424"
4 => "x-amz-request-id: txg4bec1d49c80e40528ad1-0069d4b424"
5 => "content-length: 305"
]
http_code: 404
error: null
canceled: false
http_method: "GET"
user_data: null
max_duration: 0.0
start_time: 1775547428.0886
original_url: "https://s3.fr-par.scw.cloud/s3.tousformateurs.fr/https%3A/static.xx.fbcdn.net/images/emoji.php/v9/t99/1/16/1f33a.png"
pause_handler: Closure(float $duration) {#26263
class: "Symfony\Component\HttpClient\Response\CurlResponse"
use: {
$ch: CurlHandle {#32885 …}
$multi: Symfony\Component\HttpClient\Internal\CurlClientState {#959 …}
$execCounter: -9223372036854775493
}
}
url: "https://s3.fr-par.scw.cloud/s3.tousformateurs.fr/https%3A/static.xx.fbcdn.net/images/emoji.php/v9/t99/1/16/1f33a.png"
content_type: "application/xml"
header_size: 206
request_size: 599
filetime: -1
ssl_verify_result: 0
redirect_count: 0
total_time: 0.254651
namelookup_time: 0.0
connect_time: 0.0
pretransfer_time: 0.000211
size_upload: 0.0
size_download: 305.0
speed_download: 1197.0
speed_upload: 0.0
download_content_length: 305.0
upload_content_length: 0.0
starttransfer_time: 0.254486
redirect_time: 0.0
redirect_url: null
primary_ip: "51.159.62.20"
certinfo: []
primary_port: 443
local_ip: "192.168.16.3"
local_port: 57652
http_version: 3
protocol: 2
ssl_verifyresult: 0
scheme: "https"
appconnect_time_us: 0
connect_time_us: 0
namelookup_time_us: 0
pretransfer_time_us: 211
redirect_time_us: 0
starttransfer_time_us: 254486
posttransfer_time_us: 226
total_time_us: 254651
effective_method: "GET"
capath: "/etc/ssl/certs"
cainfo: "/etc/ssl/certs/ca-certificates.crt"
debug: """
* Re-using existing https: connection with host s3.fr-par.scw.cloud\n
* [HTTP/2] [5] OPENED stream for https://s3.fr-par.scw.cloud/s3.tousformateurs.fr/https%3A/static.xx.fbcdn.net/images/emoji.php/v9/t99/1/16/1f33a.png\n
* [HTTP/2] [5] [:method: GET]\n
* [HTTP/2] [5] [:scheme: https]\n
* [HTTP/2] [5] [:authority: s3.fr-par.scw.cloud]\n
* [HTTP/2] [5] [:path: /s3.tousformateurs.fr/https%3A/static.xx.fbcdn.net/images/emoji.php/v9/t99/1/16/1f33a.png]\n
* [HTTP/2] [5] [content-type: application/xml]\n
* [HTTP/2] [5] [x-amz-content-sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855]\n
* [HTTP/2] [5] [x-amz-date: 20260407T073708Z]\n
* [HTTP/2] [5] [authorization: AWS4-HMAC-SHA256 Credential=SCW6XTRHZYNV3BHKVDH7/20260407/fr-par/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=ca8ec7d2d0a52e8013cafac1a0c2d9eb7dab7e4b79b28d70de7ee6b743501cdf]\n
* [HTTP/2] [5] [content-length: 0]\n
* [HTTP/2] [5] [accept: */*]\n
* [HTTP/2] [5] [user-agent: Symfony HttpClient (Curl)]\n
* [HTTP/2] [5] [accept-encoding: gzip]\n
> GET /s3.tousformateurs.fr/https%3A/static.xx.fbcdn.net/images/emoji.php/v9/t99/1/16/1f33a.png HTTP/2\r\n
Host: s3.fr-par.scw.cloud\r\n
content-type: application/xml\r\n
x-amz-content-sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\r\n
x-amz-date: 20260407T073708Z\r\n
authorization: AWS4-HMAC-SHA256 Credential=SCW6XTRHZYNV3BHKVDH7/20260407/fr-par/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=ca8ec7d2d0a52e8013cafac1a0c2d9eb7dab7e4b79b28d70de7ee6b743501cdf\r\n
content-length: 0\r\n
Accept: */*\r\n
User-Agent: Symfony HttpClient (Curl)\r\n
Accept-Encoding: gzip\r\n
\r\n
* Request completely sent off\n
< HTTP/2 404 \r\n
< content-type: application/xml\r\n
< date: Tue, 07 Apr 2026 07:37:08 GMT\r\n
< x-amz-id-2: txg4bec1d49c80e40528ad1-0069d4b424\r\n
< x-amz-request-id: txg4bec1d49c80e40528ad1-0069d4b424\r\n
< content-length: 305\r\n
< \r\n
* Connection #14 to host s3.fr-par.scw.cloud left intact\n
"""
…16
}
-info: array:1 [
"canceled" => false
]
-passthru: null
-stream: null
-yieldedState: 2
-initializer: null
-shouldBuffer: null
-content: stream resource @4679
wrapper_type: "PHP"
stream_type: "TEMP"
mode: "w+b"
unread_bytes: 0
seekable: true
uri: "php://temp"
options: []
}
-offset: 305
-jsonData: null
}
-awsError: AsyncAws\Core\AwsError\AwsError {#3278
-code: "NoSuchKey"
-message: "The specified key does not exist."
-type: null
-detail: null
}
trace: {
/app/vendor/async-aws/core/src/Response.php:432 {
AsyncAws\Core\Response::{closure:AsyncAws\Core\Response::defineResolveStatus():431} …
› $this->resolveResult = static function () use ($exceptionClass, $httpResponse, $awsError): HttpException {
› return new $exceptionClass($httpResponse, $awsError);
› };
}
/app/vendor/async-aws/core/src/Response.php:448 {
AsyncAws\Core\Response->getResolveStatus(): bool …
› if (\is_callable($this->resolveResult)) {
› $this->resolveResult = ($this->resolveResult)();
› }
}
/app/vendor/async-aws/core/src/Response.php:179 {
AsyncAws\Core\Response->resolve(?float $timeout = null): bool …
›
› return $this->getResolveStatus();
› }
}
/app/vendor/async-aws/core/src/Result.php:69 {
AsyncAws\Core\Result->resolve(?float $timeout = null): bool …
› {
› return $this->response->resolve($timeout);
› }
}
/app/vendor/async-aws/core/src/Result.php:137 {
AsyncAws\Core\Result->initialize(): void …
›
› $this->resolve();
› $this->initialized = true;
}
/app/vendor/async-aws/s3/src/Result/GetObjectOutput.php:375 {
AsyncAws\S3\Result\GetObjectOutput->getBody(): ResultStream …
› {
› $this->initialize();
›
}
/app/vendor/league/flysystem-async-aws-s3/AsyncAwsS3Adapter.php:524 {
League\Flysystem\AsyncAwsS3\AsyncAwsS3Adapter->readObject(string $path): ResultStream …
› try {
› return $this->client->getObject($options)->getBody();
› } catch (Throwable $exception) {
}
/app/vendor/league/flysystem-async-aws-s3/AsyncAwsS3Adapter.php:154 {
League\Flysystem\AsyncAwsS3\AsyncAwsS3Adapter->read(string $path): string …
› {
› $body = $this->readObject($path);
›
}
/app/vendor/league/flysystem/src/Filesystem.php:76 {
League\Flysystem\Filesystem->read(string $location): string …
› {
› return $this->adapter->read($this->pathNormalizer->normalizePath($location));
› }
}
/app/src/Service/StorageService.php:65 {
App\Service\StorageService->read(string $path): string …
› try {
› return $this->uploadsStorage->read($path);
› } catch (FilesystemException|UnableToReadFile $exception) {
}
/app/src/Service/PDFService.php:173 {
App\Service\PDFService->convertImageToBase64(string $imgSrc, string $siteUrl): string …
› ? file_get_contents($this->projectDir.'/'.$path)
› : $this->storageService->read($path);
›
}
/app/src/Service/PDFService.php:260 {
App\Service\PDFService->formatHtmlForGotenberg(string $html): string …
› if (!str_starts_with($imgSrc, 'data:')) {
› $base64Src = $this->convertImageToBase64($imgSrc, $siteUrl);
› $img->setAttribute('src', $base64Src);
}
/app/src/Service/PDFService.php:147 {
App\Service\PDFService->prepareHtmlWithHeadersFooters(string $html): array …
› return [
› 'content' => $this->formatHtmlForGotenberg($contentHtml),
› 'header' => $this->formatHtmlForGotenberg($headerHtml),
}
/app/src/Service/PDFService.php:92 {
App\Service\PDFService->outputPDF(string $html): string …
› {
› $htmlParts = $this->prepareHtmlWithHeadersFooters($html);
›
}
/app/src/Controller/Front/TrainingController.php:120 {
App\Controller\Front\TrainingController->pdf(Training $training): Response …
›
› $response = $this->PDFService->outputPDF($html);
›
}
/app/vendor/symfony/http-kernel/HttpKernel.php:183 {
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Request $request, int $type = self::MAIN_REQUEST): Response …
› // call controller
› $response = $controller(...$arguments);
›
}
/app/vendor/symfony/http-kernel/HttpKernel.php:76 {
Symfony\Component\HttpKernel\HttpKernel->handle(Request $request, int $type = HttpKernelInterface::MAIN_REQUEST, bool $catch = true): Response …
› try {
› return $response = $this->handleRaw($request, $type);
› } catch (\Throwable $e) {
}
/app/vendor/symfony/http-kernel/Kernel.php:193 {
Symfony\Component\HttpKernel\Kernel->handle(Request $request, int $type = HttpKernelInterface::MAIN_REQUEST, bool $catch = true): Response …
› try {
› return $this->getHttpKernel()->handle($request, $type, $catch);
› } finally {
}
/app/vendor/runtime/frankenphp-symfony/src/Runner.php:38 {
Runtime\FrankenPhpSymfony\Runner->{closure:Runtime\FrankenPhpSymfony\Runner::run():33} …
› $sfRequest = Request::createFromGlobals();
› $sfResponse = $this->kernel->handle($sfRequest);
›
}
Runtime\FrankenPhpSymfony\Runner->{closure:Runtime\FrankenPhpSymfony\Runner::run():33}() {}
/app/vendor/runtime/frankenphp-symfony/src/Runner.php:45 {
Runtime\FrankenPhpSymfony\Runner->run(): int …
› do {
› $ret = \frankenphp_handle_request($handler);
›
}
/app/vendor/autoload_runtime.php:32 {
require_once …
› ->getRunner($app)
› ->run()
› );
}
/app/public/index.php:5 {
›
› require_once dirname(__DIR__).'/vendor/autoload_runtime.php';
›
arguments: {
"/app/vendor/autoload_runtime.php"
}
}
}
}
-location: "https:/static.xx.fbcdn.net/images/emoji.php/v9/t99/1/16/1f33a.png"
-reason: """
HTTP 404 returned for "https://s3.fr-par.scw.cloud/s3.tousformateurs.fr/https%3A/static.xx.fbcdn.net/images/emoji.php/v9/t99/1/16/1f33a.png".\n
\n
Code: NoSuchKey\n
Message: The specified key does not exist.\n
Type: \n
Detail: \n
"""
trace: {
/app/vendor/league/flysystem/src/UnableToReadFile.php:24 {
League\Flysystem\UnableToReadFile::fromLocation(string $location, string $reason = '', ?Throwable $previous = null): UnableToReadFile …
› {
› $e = new static(rtrim("Unable to read file from location: {$location}. {$reason}"), 0, $previous);
› $e->location = $location;
}
/app/vendor/league/flysystem-async-aws-s3/AsyncAwsS3Adapter.php:526 {
League\Flysystem\AsyncAwsS3\AsyncAwsS3Adapter->readObject(string $path): ResultStream …
› } catch (Throwable $exception) {
› throw UnableToReadFile::fromLocation($path, $exception->getMessage(), $exception);
› }
}
/app/vendor/league/flysystem-async-aws-s3/AsyncAwsS3Adapter.php:154 {
League\Flysystem\AsyncAwsS3\AsyncAwsS3Adapter->read(string $path): string …
› {
› $body = $this->readObject($path);
›
}
/app/vendor/league/flysystem/src/Filesystem.php:76 {
League\Flysystem\Filesystem->read(string $location): string …
› {
› return $this->adapter->read($this->pathNormalizer->normalizePath($location));
› }
}
/app/src/Service/StorageService.php:65 {
App\Service\StorageService->read(string $path): string …
› try {
› return $this->uploadsStorage->read($path);
› } catch (FilesystemException|UnableToReadFile $exception) {
}
/app/src/Service/PDFService.php:173 {
App\Service\PDFService->convertImageToBase64(string $imgSrc, string $siteUrl): string …
› ? file_get_contents($this->projectDir.'/'.$path)
› : $this->storageService->read($path);
›
}
/app/src/Service/PDFService.php:260 {
App\Service\PDFService->formatHtmlForGotenberg(string $html): string …
› if (!str_starts_with($imgSrc, 'data:')) {
› $base64Src = $this->convertImageToBase64($imgSrc, $siteUrl);
› $img->setAttribute('src', $base64Src);
}
/app/src/Service/PDFService.php:147 {
App\Service\PDFService->prepareHtmlWithHeadersFooters(string $html): array …
› return [
› 'content' => $this->formatHtmlForGotenberg($contentHtml),
› 'header' => $this->formatHtmlForGotenberg($headerHtml),
}
/app/src/Service/PDFService.php:92 {
App\Service\PDFService->outputPDF(string $html): string …
› {
› $htmlParts = $this->prepareHtmlWithHeadersFooters($html);
›
}
/app/src/Controller/Front/TrainingController.php:120 {
App\Controller\Front\TrainingController->pdf(Training $training): Response …
›
› $response = $this->PDFService->outputPDF($html);
›
}
/app/vendor/symfony/http-kernel/HttpKernel.php:183 {
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Request $request, int $type = self::MAIN_REQUEST): Response …
› // call controller
› $response = $controller(...$arguments);
›
}
/app/vendor/symfony/http-kernel/HttpKernel.php:76 {
Symfony\Component\HttpKernel\HttpKernel->handle(Request $request, int $type = HttpKernelInterface::MAIN_REQUEST, bool $catch = true): Response …
› try {
› return $response = $this->handleRaw($request, $type);
› } catch (\Throwable $e) {
}
/app/vendor/symfony/http-kernel/Kernel.php:193 {
Symfony\Component\HttpKernel\Kernel->handle(Request $request, int $type = HttpKernelInterface::MAIN_REQUEST, bool $catch = true): Response …
› try {
› return $this->getHttpKernel()->handle($request, $type, $catch);
› } finally {
}
/app/vendor/runtime/frankenphp-symfony/src/Runner.php:38 {
Runtime\FrankenPhpSymfony\Runner->{closure:Runtime\FrankenPhpSymfony\Runner::run():33} …
› $sfRequest = Request::createFromGlobals();
› $sfResponse = $this->kernel->handle($sfRequest);
›
}
Runtime\FrankenPhpSymfony\Runner->{closure:Runtime\FrankenPhpSymfony\Runner::run():33}() {}
/app/vendor/runtime/frankenphp-symfony/src/Runner.php:45 {
Runtime\FrankenPhpSymfony\Runner->run(): int …
› do {
› $ret = \frankenphp_handle_request($handler);
›
}
/app/vendor/autoload_runtime.php:32 {
require_once …
› ->getRunner($app)
› ->run()
› );
}
/app/public/index.php:5 {
›
› require_once dirname(__DIR__).'/vendor/autoload_runtime.php';
›
arguments: {
"/app/vendor/autoload_runtime.php"
}
}
}
}
League\Flysystem\UnableToReadFile {#28194
#message: """
Unable to read file from location: https:/static.xx.fbcdn.net/images/emoji.php/v9/t6c/1/16/2764.png. HTTP 404 returned for "https://s3.fr-par.scw.cloud/s3.tousformateurs.fr/https%3A/static.xx.fbcdn.net/images/emoji.php/v9/t6c/1/16/2764.png".\n
\n
Code: NoSuchKey\n
Message: The specified key does not exist.\n
Type: \n
Detail:
"""
#code: 0
#file: "/app/vendor/league/flysystem/src/UnableToReadFile.php"
#line: 24
-previous: AsyncAws\S3\Exception\NoSuchKeyException {#30167
#message: """
HTTP 404 returned for "https://s3.fr-par.scw.cloud/s3.tousformateurs.fr/https%3A/static.xx.fbcdn.net/images/emoji.php/v9/t6c/1/16/2764.png".\n
\n
Code: NoSuchKey\n
Message: The specified key does not exist.\n
Type: \n
Detail: \n
"""
#code: 404
#file: "/app/vendor/async-aws/core/src/Response.php"
#line: 432
-response: Symfony\Component\HttpClient\Response\AsyncResponse {#32885
-client: Symfony\Component\HttpClient\CurlHttpClient {#958
-defaultOptions: array:31 [
"auth_basic" => null
"auth_bearer" => null
"query" => []
"headers" => []
"body" => ""
"json" => null
"user_data" => null
"max_redirects" => 20
"http_version" => null
"base_uri" => null
"buffer" => true
"on_progress" => null
"resolve" => []
"proxy" => null
"no_proxy" => null
"timeout" => null
"max_duration" => 0
"bindto" => "0"
"verify_peer" => true
"verify_host" => true
"cafile" => null
"capath" => null
"local_cert" => null
"local_pk" => null
"passphrase" => null
"ciphers" => null
"peer_fingerprint" => null
"capture_peer_cert_chain" => false
"crypto_method" => 33
"extra" => []
"auth_ntlm" => null
]
-logger: null
-multi: Symfony\Component\HttpClient\Internal\CurlClientState {#959 …}
}
-response: Symfony\Component\HttpClient\Response\CurlResponse {#30628
response_headers: array:6 [
0 => "HTTP/2 404 "
1 => "content-type: application/xml"
2 => "date: Tue, 07 Apr 2026 07:37:08 GMT"
3 => "x-amz-id-2: txg1dabe7868a8e45ae8fd7-0069d4b424"
4 => "x-amz-request-id: txg1dabe7868a8e45ae8fd7-0069d4b424"
5 => "content-length: 304"
]
http_code: 404
error: null
canceled: false
http_method: "GET"
user_data: null
max_duration: 0.0
start_time: 1775547428.3513
original_url: "https://s3.fr-par.scw.cloud/s3.tousformateurs.fr/https%3A/static.xx.fbcdn.net/images/emoji.php/v9/t6c/1/16/2764.png"
pause_handler: Closure(float $duration) {#30853
class: "Symfony\Component\HttpClient\Response\CurlResponse"
use: {
$ch: CurlHandle {#26263 …}
$multi: Symfony\Component\HttpClient\Internal\CurlClientState {#959 …}
$execCounter: -9223372036854775490
}
}
url: "https://s3.fr-par.scw.cloud/s3.tousformateurs.fr/https%3A/static.xx.fbcdn.net/images/emoji.php/v9/t6c/1/16/2764.png"
content_type: "application/xml"
header_size: 206
request_size: 598
filetime: -1
ssl_verify_result: 0
redirect_count: 0
total_time: 0.230124
namelookup_time: 0.0
connect_time: 0.0
pretransfer_time: 0.000291
size_upload: 0.0
size_download: 304.0
speed_download: 1321.0
speed_upload: 0.0
download_content_length: 304.0
upload_content_length: 0.0
starttransfer_time: 0.229976
redirect_time: 0.0
redirect_url: null
primary_ip: "51.159.62.20"
certinfo: []
primary_port: 443
local_ip: "192.168.16.3"
local_port: 57652
http_version: 3
protocol: 2
ssl_verifyresult: 0
scheme: "https"
appconnect_time_us: 0
connect_time_us: 0
namelookup_time_us: 0
pretransfer_time_us: 291
redirect_time_us: 0
starttransfer_time_us: 229976
posttransfer_time_us: 307
total_time_us: 230124
effective_method: "GET"
capath: "/etc/ssl/certs"
cainfo: "/etc/ssl/certs/ca-certificates.crt"
debug: """
* Re-using existing https: connection with host s3.fr-par.scw.cloud\n
* [HTTP/2] [7] OPENED stream for https://s3.fr-par.scw.cloud/s3.tousformateurs.fr/https%3A/static.xx.fbcdn.net/images/emoji.php/v9/t6c/1/16/2764.png\n
* [HTTP/2] [7] [:method: GET]\n
* [HTTP/2] [7] [:scheme: https]\n
* [HTTP/2] [7] [:authority: s3.fr-par.scw.cloud]\n
* [HTTP/2] [7] [:path: /s3.tousformateurs.fr/https%3A/static.xx.fbcdn.net/images/emoji.php/v9/t6c/1/16/2764.png]\n
* [HTTP/2] [7] [content-type: application/xml]\n
* [HTTP/2] [7] [x-amz-content-sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855]\n
* [HTTP/2] [7] [x-amz-date: 20260407T073708Z]\n
* [HTTP/2] [7] [authorization: AWS4-HMAC-SHA256 Credential=SCW6XTRHZYNV3BHKVDH7/20260407/fr-par/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=6eb82b58e7150a4b4ca9745bb856fc6c7953b707c22524be4d5c0c431ac72a9b]\n
* [HTTP/2] [7] [content-length: 0]\n
* [HTTP/2] [7] [accept: */*]\n
* [HTTP/2] [7] [user-agent: Symfony HttpClient (Curl)]\n
* [HTTP/2] [7] [accept-encoding: gzip]\n
> GET /s3.tousformateurs.fr/https%3A/static.xx.fbcdn.net/images/emoji.php/v9/t6c/1/16/2764.png HTTP/2\r\n
Host: s3.fr-par.scw.cloud\r\n
content-type: application/xml\r\n
x-amz-content-sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\r\n
x-amz-date: 20260407T073708Z\r\n
authorization: AWS4-HMAC-SHA256 Credential=SCW6XTRHZYNV3BHKVDH7/20260407/fr-par/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=6eb82b58e7150a4b4ca9745bb856fc6c7953b707c22524be4d5c0c431ac72a9b\r\n
content-length: 0\r\n
Accept: */*\r\n
User-Agent: Symfony HttpClient (Curl)\r\n
Accept-Encoding: gzip\r\n
\r\n
* Request completely sent off\n
< HTTP/2 404 \r\n
< content-type: application/xml\r\n
< date: Tue, 07 Apr 2026 07:37:08 GMT\r\n
< x-amz-id-2: txg1dabe7868a8e45ae8fd7-0069d4b424\r\n
< x-amz-request-id: txg1dabe7868a8e45ae8fd7-0069d4b424\r\n
< content-length: 304\r\n
< \r\n
* Connection #14 to host s3.fr-par.scw.cloud left intact\n
"""
…16
}
-info: array:1 [
"canceled" => false
]
-passthru: null
-stream: null
-yieldedState: 2
-initializer: null
-shouldBuffer: null
-content: stream resource @4684
wrapper_type: "PHP"
stream_type: "TEMP"
mode: "w+b"
unread_bytes: 0
seekable: true
uri: "php://temp"
options: []
}
-offset: 304
-jsonData: null
}
-awsError: AsyncAws\Core\AwsError\AwsError {#34102
-code: "NoSuchKey"
-message: "The specified key does not exist."
-type: null
-detail: null
}
trace: {
/app/vendor/async-aws/core/src/Response.php:432 {
AsyncAws\Core\Response::{closure:AsyncAws\Core\Response::defineResolveStatus():431} …
› $this->resolveResult = static function () use ($exceptionClass, $httpResponse, $awsError): HttpException {
› return new $exceptionClass($httpResponse, $awsError);
› };
}
/app/vendor/async-aws/core/src/Response.php:448 {
AsyncAws\Core\Response->getResolveStatus(): bool …
› if (\is_callable($this->resolveResult)) {
› $this->resolveResult = ($this->resolveResult)();
› }
}
/app/vendor/async-aws/core/src/Response.php:179 {
AsyncAws\Core\Response->resolve(?float $timeout = null): bool …
›
› return $this->getResolveStatus();
› }
}
/app/vendor/async-aws/core/src/Result.php:69 {
AsyncAws\Core\Result->resolve(?float $timeout = null): bool …
› {
› return $this->response->resolve($timeout);
› }
}
/app/vendor/async-aws/core/src/Result.php:137 {
AsyncAws\Core\Result->initialize(): void …
›
› $this->resolve();
› $this->initialized = true;
}
/app/vendor/async-aws/s3/src/Result/GetObjectOutput.php:375 {
AsyncAws\S3\Result\GetObjectOutput->getBody(): ResultStream …
› {
› $this->initialize();
›
}
/app/vendor/league/flysystem-async-aws-s3/AsyncAwsS3Adapter.php:524 {
League\Flysystem\AsyncAwsS3\AsyncAwsS3Adapter->readObject(string $path): ResultStream …
› try {
› return $this->client->getObject($options)->getBody();
› } catch (Throwable $exception) {
}
/app/vendor/league/flysystem-async-aws-s3/AsyncAwsS3Adapter.php:154 {
League\Flysystem\AsyncAwsS3\AsyncAwsS3Adapter->read(string $path): string …
› {
› $body = $this->readObject($path);
›
}
/app/vendor/league/flysystem/src/Filesystem.php:76 {
League\Flysystem\Filesystem->read(string $location): string …
› {
› return $this->adapter->read($this->pathNormalizer->normalizePath($location));
› }
}
/app/src/Service/StorageService.php:65 {
App\Service\StorageService->read(string $path): string …
› try {
› return $this->uploadsStorage->read($path);
› } catch (FilesystemException|UnableToReadFile $exception) {
}
/app/src/Service/PDFService.php:173 {
App\Service\PDFService->convertImageToBase64(string $imgSrc, string $siteUrl): string …
› ? file_get_contents($this->projectDir.'/'.$path)
› : $this->storageService->read($path);
›
}
/app/src/Service/PDFService.php:260 {
App\Service\PDFService->formatHtmlForGotenberg(string $html): string …
› if (!str_starts_with($imgSrc, 'data:')) {
› $base64Src = $this->convertImageToBase64($imgSrc, $siteUrl);
› $img->setAttribute('src', $base64Src);
}
/app/src/Service/PDFService.php:147 {
App\Service\PDFService->prepareHtmlWithHeadersFooters(string $html): array …
› return [
› 'content' => $this->formatHtmlForGotenberg($contentHtml),
› 'header' => $this->formatHtmlForGotenberg($headerHtml),
}
/app/src/Service/PDFService.php:92 {
App\Service\PDFService->outputPDF(string $html): string …
› {
› $htmlParts = $this->prepareHtmlWithHeadersFooters($html);
›
}
/app/src/Controller/Front/TrainingController.php:120 {
App\Controller\Front\TrainingController->pdf(Training $training): Response …
›
› $response = $this->PDFService->outputPDF($html);
›
}
/app/vendor/symfony/http-kernel/HttpKernel.php:183 {
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Request $request, int $type = self::MAIN_REQUEST): Response …
› // call controller
› $response = $controller(...$arguments);
›
}
/app/vendor/symfony/http-kernel/HttpKernel.php:76 {
Symfony\Component\HttpKernel\HttpKernel->handle(Request $request, int $type = HttpKernelInterface::MAIN_REQUEST, bool $catch = true): Response …
› try {
› return $response = $this->handleRaw($request, $type);
› } catch (\Throwable $e) {
}
/app/vendor/symfony/http-kernel/Kernel.php:193 {
Symfony\Component\HttpKernel\Kernel->handle(Request $request, int $type = HttpKernelInterface::MAIN_REQUEST, bool $catch = true): Response …
› try {
› return $this->getHttpKernel()->handle($request, $type, $catch);
› } finally {
}
/app/vendor/runtime/frankenphp-symfony/src/Runner.php:38 {
Runtime\FrankenPhpSymfony\Runner->{closure:Runtime\FrankenPhpSymfony\Runner::run():33} …
› $sfRequest = Request::createFromGlobals();
› $sfResponse = $this->kernel->handle($sfRequest);
›
}
Runtime\FrankenPhpSymfony\Runner->{closure:Runtime\FrankenPhpSymfony\Runner::run():33}() {}
/app/vendor/runtime/frankenphp-symfony/src/Runner.php:45 {
Runtime\FrankenPhpSymfony\Runner->run(): int …
› do {
› $ret = \frankenphp_handle_request($handler);
›
}
/app/vendor/autoload_runtime.php:32 {
require_once …
› ->getRunner($app)
› ->run()
› );
}
/app/public/index.php:5 {
›
› require_once dirname(__DIR__).'/vendor/autoload_runtime.php';
›
arguments: {
"/app/vendor/autoload_runtime.php"
}
}
}
}
-location: "https:/static.xx.fbcdn.net/images/emoji.php/v9/t6c/1/16/2764.png"
-reason: """
HTTP 404 returned for "https://s3.fr-par.scw.cloud/s3.tousformateurs.fr/https%3A/static.xx.fbcdn.net/images/emoji.php/v9/t6c/1/16/2764.png".\n
\n
Code: NoSuchKey\n
Message: The specified key does not exist.\n
Type: \n
Detail: \n
"""
trace: {
/app/vendor/league/flysystem/src/UnableToReadFile.php:24 {
League\Flysystem\UnableToReadFile::fromLocation(string $location, string $reason = '', ?Throwable $previous = null): UnableToReadFile …
› {
› $e = new static(rtrim("Unable to read file from location: {$location}. {$reason}"), 0, $previous);
› $e->location = $location;
}
/app/vendor/league/flysystem-async-aws-s3/AsyncAwsS3Adapter.php:526 {
League\Flysystem\AsyncAwsS3\AsyncAwsS3Adapter->readObject(string $path): ResultStream …
› } catch (Throwable $exception) {
› throw UnableToReadFile::fromLocation($path, $exception->getMessage(), $exception);
› }
}
/app/vendor/league/flysystem-async-aws-s3/AsyncAwsS3Adapter.php:154 {
League\Flysystem\AsyncAwsS3\AsyncAwsS3Adapter->read(string $path): string …
› {
› $body = $this->readObject($path);
›
}
/app/vendor/league/flysystem/src/Filesystem.php:76 {
League\Flysystem\Filesystem->read(string $location): string …
› {
› return $this->adapter->read($this->pathNormalizer->normalizePath($location));
› }
}
/app/src/Service/StorageService.php:65 {
App\Service\StorageService->read(string $path): string …
› try {
› return $this->uploadsStorage->read($path);
› } catch (FilesystemException|UnableToReadFile $exception) {
}
/app/src/Service/PDFService.php:173 {
App\Service\PDFService->convertImageToBase64(string $imgSrc, string $siteUrl): string …
› ? file_get_contents($this->projectDir.'/'.$path)
› : $this->storageService->read($path);
›
}
/app/src/Service/PDFService.php:260 {
App\Service\PDFService->formatHtmlForGotenberg(string $html): string …
› if (!str_starts_with($imgSrc, 'data:')) {
› $base64Src = $this->convertImageToBase64($imgSrc, $siteUrl);
› $img->setAttribute('src', $base64Src);
}
/app/src/Service/PDFService.php:147 {
App\Service\PDFService->prepareHtmlWithHeadersFooters(string $html): array …
› return [
› 'content' => $this->formatHtmlForGotenberg($contentHtml),
› 'header' => $this->formatHtmlForGotenberg($headerHtml),
}
/app/src/Service/PDFService.php:92 {
App\Service\PDFService->outputPDF(string $html): string …
› {
› $htmlParts = $this->prepareHtmlWithHeadersFooters($html);
›
}
/app/src/Controller/Front/TrainingController.php:120 {
App\Controller\Front\TrainingController->pdf(Training $training): Response …
›
› $response = $this->PDFService->outputPDF($html);
›
}
/app/vendor/symfony/http-kernel/HttpKernel.php:183 {
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Request $request, int $type = self::MAIN_REQUEST): Response …
› // call controller
› $response = $controller(...$arguments);
›
}
/app/vendor/symfony/http-kernel/HttpKernel.php:76 {
Symfony\Component\HttpKernel\HttpKernel->handle(Request $request, int $type = HttpKernelInterface::MAIN_REQUEST, bool $catch = true): Response …
› try {
› return $response = $this->handleRaw($request, $type);
› } catch (\Throwable $e) {
}
/app/vendor/symfony/http-kernel/Kernel.php:193 {
Symfony\Component\HttpKernel\Kernel->handle(Request $request, int $type = HttpKernelInterface::MAIN_REQUEST, bool $catch = true): Response …
› try {
› return $this->getHttpKernel()->handle($request, $type, $catch);
› } finally {
}
/app/vendor/runtime/frankenphp-symfony/src/Runner.php:38 {
Runtime\FrankenPhpSymfony\Runner->{closure:Runtime\FrankenPhpSymfony\Runner::run():33} …
› $sfRequest = Request::createFromGlobals();
› $sfResponse = $this->kernel->handle($sfRequest);
›
}
Runtime\FrankenPhpSymfony\Runner->{closure:Runtime\FrankenPhpSymfony\Runner::run():33}() {}
/app/vendor/runtime/frankenphp-symfony/src/Runner.php:45 {
Runtime\FrankenPhpSymfony\Runner->run(): int …
› do {
› $ret = \frankenphp_handle_request($handler);
›
}
/app/vendor/autoload_runtime.php:32 {
require_once …
› ->getRunner($app)
› ->run()
› );
}
/app/public/index.php:5 {
›
› require_once dirname(__DIR__).'/vendor/autoload_runtime.php';
›
arguments: {
"/app/vendor/autoload_runtime.php"
}
}
}
}
League\Flysystem\UnableToReadFile {#32885
#message: """
Unable to read file from location: https:/static.xx.fbcdn.net/images/emoji.php/v9/tf0/1/16/1f338.png. HTTP 404 returned for "https://s3.fr-par.scw.cloud/s3.tousformateurs.fr/https%3A/static.xx.fbcdn.net/images/emoji.php/v9/tf0/1/16/1f338.png".\n
\n
Code: NoSuchKey\n
Message: The specified key does not exist.\n
Type: \n
Detail:
"""
#code: 0
#file: "/app/vendor/league/flysystem/src/UnableToReadFile.php"
#line: 24
-previous: AsyncAws\S3\Exception\NoSuchKeyException {#29414
#message: """
HTTP 404 returned for "https://s3.fr-par.scw.cloud/s3.tousformateurs.fr/https%3A/static.xx.fbcdn.net/images/emoji.php/v9/tf0/1/16/1f338.png".\n
\n
Code: NoSuchKey\n
Message: The specified key does not exist.\n
Type: \n
Detail: \n
"""
#code: 404
#file: "/app/vendor/async-aws/core/src/Response.php"
#line: 432
-response: Symfony\Component\HttpClient\Response\AsyncResponse {#26263
-client: Symfony\Component\HttpClient\CurlHttpClient {#958
-defaultOptions: array:31 [
"auth_basic" => null
"auth_bearer" => null
"query" => []
"headers" => []
"body" => ""
"json" => null
"user_data" => null
"max_redirects" => 20
"http_version" => null
"base_uri" => null
"buffer" => true
"on_progress" => null
"resolve" => []
"proxy" => null
"no_proxy" => null
"timeout" => null
"max_duration" => 0
"bindto" => "0"
"verify_peer" => true
"verify_host" => true
"cafile" => null
"capath" => null
"local_cert" => null
"local_pk" => null
"passphrase" => null
"ciphers" => null
"peer_fingerprint" => null
"capture_peer_cert_chain" => false
"crypto_method" => 33
"extra" => []
"auth_ntlm" => null
]
-logger: null
-multi: Symfony\Component\HttpClient\Internal\CurlClientState {#959 …}
}
-response: Symfony\Component\HttpClient\Response\CurlResponse {#32283
response_headers: array:6 [
0 => "HTTP/2 404 "
1 => "content-type: application/xml"
2 => "date: Tue, 07 Apr 2026 07:37:08 GMT"
3 => "x-amz-id-2: txg0a01d6d4c5634fb49e70-0069d4b424"
4 => "x-amz-request-id: txg0a01d6d4c5634fb49e70-0069d4b424"
5 => "content-length: 305"
]
http_code: 404
error: null
canceled: false
http_method: "GET"
user_data: null
max_duration: 0.0
start_time: 1775547428.5906
original_url: "https://s3.fr-par.scw.cloud/s3.tousformateurs.fr/https%3A/static.xx.fbcdn.net/images/emoji.php/v9/tf0/1/16/1f338.png"
pause_handler: Closure(float $duration) {#34215
class: "Symfony\Component\HttpClient\Response\CurlResponse"
use: {
$ch: CurlHandle {#30853 …}
$multi: Symfony\Component\HttpClient\Internal\CurlClientState {#959 …}
$execCounter: -9223372036854775487
}
}
url: "https://s3.fr-par.scw.cloud/s3.tousformateurs.fr/https%3A/static.xx.fbcdn.net/images/emoji.php/v9/tf0/1/16/1f338.png"
content_type: "application/xml"
header_size: 206
request_size: 599
filetime: -1
ssl_verify_result: 0
redirect_count: 0
total_time: 0.359547
namelookup_time: 0.0
connect_time: 0.0
pretransfer_time: 0.000267
size_upload: 0.0
size_download: 305.0
speed_download: 848.0
speed_upload: 0.0
download_content_length: 305.0
upload_content_length: 0.0
starttransfer_time: 0.359411
redirect_time: 0.0
redirect_url: null
primary_ip: "51.159.62.20"
certinfo: []
primary_port: 443
local_ip: "192.168.16.3"
local_port: 57652
http_version: 3
protocol: 2
ssl_verifyresult: 0
scheme: "https"
appconnect_time_us: 0
connect_time_us: 0
namelookup_time_us: 0
pretransfer_time_us: 267
redirect_time_us: 0
starttransfer_time_us: 359411
posttransfer_time_us: 283
total_time_us: 359547
effective_method: "GET"
capath: "/etc/ssl/certs"
cainfo: "/etc/ssl/certs/ca-certificates.crt"
debug: """
* Re-using existing https: connection with host s3.fr-par.scw.cloud\n
* [HTTP/2] [9] OPENED stream for https://s3.fr-par.scw.cloud/s3.tousformateurs.fr/https%3A/static.xx.fbcdn.net/images/emoji.php/v9/tf0/1/16/1f338.png\n
* [HTTP/2] [9] [:method: GET]\n
* [HTTP/2] [9] [:scheme: https]\n
* [HTTP/2] [9] [:authority: s3.fr-par.scw.cloud]\n
* [HTTP/2] [9] [:path: /s3.tousformateurs.fr/https%3A/static.xx.fbcdn.net/images/emoji.php/v9/tf0/1/16/1f338.png]\n
* [HTTP/2] [9] [content-type: application/xml]\n
* [HTTP/2] [9] [x-amz-content-sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855]\n
* [HTTP/2] [9] [x-amz-date: 20260407T073708Z]\n
* [HTTP/2] [9] [authorization: AWS4-HMAC-SHA256 Credential=SCW6XTRHZYNV3BHKVDH7/20260407/fr-par/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=2de6d4af5e420c8ca61ba0c544de5af82ccead37f7afe376bce4fb2a12cc3fb0]\n
* [HTTP/2] [9] [content-length: 0]\n
* [HTTP/2] [9] [accept: */*]\n
* [HTTP/2] [9] [user-agent: Symfony HttpClient (Curl)]\n
* [HTTP/2] [9] [accept-encoding: gzip]\n
> GET /s3.tousformateurs.fr/https%3A/static.xx.fbcdn.net/images/emoji.php/v9/tf0/1/16/1f338.png HTTP/2\r\n
Host: s3.fr-par.scw.cloud\r\n
content-type: application/xml\r\n
x-amz-content-sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\r\n
x-amz-date: 20260407T073708Z\r\n
authorization: AWS4-HMAC-SHA256 Credential=SCW6XTRHZYNV3BHKVDH7/20260407/fr-par/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=2de6d4af5e420c8ca61ba0c544de5af82ccead37f7afe376bce4fb2a12cc3fb0\r\n
content-length: 0\r\n
Accept: */*\r\n
User-Agent: Symfony HttpClient (Curl)\r\n
Accept-Encoding: gzip\r\n
\r\n
* Request completely sent off\n
< HTTP/2 404 \r\n
< content-type: application/xml\r\n
< date: Tue, 07 Apr 2026 07:37:08 GMT\r\n
< x-amz-id-2: txg0a01d6d4c5634fb49e70-0069d4b424\r\n
< x-amz-request-id: txg0a01d6d4c5634fb49e70-0069d4b424\r\n
< content-length: 305\r\n
< \r\n
* Connection #14 to host s3.fr-par.scw.cloud left intact\n
"""
…16
}
-info: array:1 [
"canceled" => false
]
-passthru: null
-stream: null
-yieldedState: 2
-initializer: null
-shouldBuffer: null
-content: stream resource @4689
wrapper_type: "PHP"
stream_type: "TEMP"
mode: "w+b"
unread_bytes: 0
seekable: true
uri: "php://temp"
options: []
}
-offset: 305
-jsonData: null
}
-awsError: AsyncAws\Core\AwsError\AwsError {#29142
-code: "NoSuchKey"
-message: "The specified key does not exist."
-type: null
-detail: null
}
trace: {
/app/vendor/async-aws/core/src/Response.php:432 {
AsyncAws\Core\Response::{closure:AsyncAws\Core\Response::defineResolveStatus():431} …
› $this->resolveResult = static function () use ($exceptionClass, $httpResponse, $awsError): HttpException {
› return new $exceptionClass($httpResponse, $awsError);
› };
}
/app/vendor/async-aws/core/src/Response.php:448 {
AsyncAws\Core\Response->getResolveStatus(): bool …
› if (\is_callable($this->resolveResult)) {
› $this->resolveResult = ($this->resolveResult)();
› }
}
/app/vendor/async-aws/core/src/Response.php:179 {
AsyncAws\Core\Response->resolve(?float $timeout = null): bool …
›
› return $this->getResolveStatus();
› }
}
/app/vendor/async-aws/core/src/Result.php:69 {
AsyncAws\Core\Result->resolve(?float $timeout = null): bool …
› {
› return $this->response->resolve($timeout);
› }
}
/app/vendor/async-aws/core/src/Result.php:137 {
AsyncAws\Core\Result->initialize(): void …
›
› $this->resolve();
› $this->initialized = true;
}
/app/vendor/async-aws/s3/src/Result/GetObjectOutput.php:375 {
AsyncAws\S3\Result\GetObjectOutput->getBody(): ResultStream …
› {
› $this->initialize();
›
}
/app/vendor/league/flysystem-async-aws-s3/AsyncAwsS3Adapter.php:524 {
League\Flysystem\AsyncAwsS3\AsyncAwsS3Adapter->readObject(string $path): ResultStream …
› try {
› return $this->client->getObject($options)->getBody();
› } catch (Throwable $exception) {
}
/app/vendor/league/flysystem-async-aws-s3/AsyncAwsS3Adapter.php:154 {
League\Flysystem\AsyncAwsS3\AsyncAwsS3Adapter->read(string $path): string …
› {
› $body = $this->readObject($path);
›
}
/app/vendor/league/flysystem/src/Filesystem.php:76 {
League\Flysystem\Filesystem->read(string $location): string …
› {
› return $this->adapter->read($this->pathNormalizer->normalizePath($location));
› }
}
/app/src/Service/StorageService.php:65 {
App\Service\StorageService->read(string $path): string …
› try {
› return $this->uploadsStorage->read($path);
› } catch (FilesystemException|UnableToReadFile $exception) {
}
/app/src/Service/PDFService.php:173 {
App\Service\PDFService->convertImageToBase64(string $imgSrc, string $siteUrl): string …
› ? file_get_contents($this->projectDir.'/'.$path)
› : $this->storageService->read($path);
›
}
/app/src/Service/PDFService.php:260 {
App\Service\PDFService->formatHtmlForGotenberg(string $html): string …
› if (!str_starts_with($imgSrc, 'data:')) {
› $base64Src = $this->convertImageToBase64($imgSrc, $siteUrl);
› $img->setAttribute('src', $base64Src);
}
/app/src/Service/PDFService.php:147 {
App\Service\PDFService->prepareHtmlWithHeadersFooters(string $html): array …
› return [
› 'content' => $this->formatHtmlForGotenberg($contentHtml),
› 'header' => $this->formatHtmlForGotenberg($headerHtml),
}
/app/src/Service/PDFService.php:92 {
App\Service\PDFService->outputPDF(string $html): string …
› {
› $htmlParts = $this->prepareHtmlWithHeadersFooters($html);
›
}
/app/src/Controller/Front/TrainingController.php:120 {
App\Controller\Front\TrainingController->pdf(Training $training): Response …
›
› $response = $this->PDFService->outputPDF($html);
›
}
/app/vendor/symfony/http-kernel/HttpKernel.php:183 {
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Request $request, int $type = self::MAIN_REQUEST): Response …
› // call controller
› $response = $controller(...$arguments);
›
}
/app/vendor/symfony/http-kernel/HttpKernel.php:76 {
Symfony\Component\HttpKernel\HttpKernel->handle(Request $request, int $type = HttpKernelInterface::MAIN_REQUEST, bool $catch = true): Response …
› try {
› return $response = $this->handleRaw($request, $type);
› } catch (\Throwable $e) {
}
/app/vendor/symfony/http-kernel/Kernel.php:193 {
Symfony\Component\HttpKernel\Kernel->handle(Request $request, int $type = HttpKernelInterface::MAIN_REQUEST, bool $catch = true): Response …
› try {
› return $this->getHttpKernel()->handle($request, $type, $catch);
› } finally {
}
/app/vendor/runtime/frankenphp-symfony/src/Runner.php:38 {
Runtime\FrankenPhpSymfony\Runner->{closure:Runtime\FrankenPhpSymfony\Runner::run():33} …
› $sfRequest = Request::createFromGlobals();
› $sfResponse = $this->kernel->handle($sfRequest);
›
}
Runtime\FrankenPhpSymfony\Runner->{closure:Runtime\FrankenPhpSymfony\Runner::run():33}() {}
/app/vendor/runtime/frankenphp-symfony/src/Runner.php:45 {
Runtime\FrankenPhpSymfony\Runner->run(): int …
› do {
› $ret = \frankenphp_handle_request($handler);
›
}
/app/vendor/autoload_runtime.php:32 {
require_once …
› ->getRunner($app)
› ->run()
› );
}
/app/public/index.php:5 {
›
› require_once dirname(__DIR__).'/vendor/autoload_runtime.php';
›
arguments: {
"/app/vendor/autoload_runtime.php"
}
}
}
}
-location: "https:/static.xx.fbcdn.net/images/emoji.php/v9/tf0/1/16/1f338.png"
-reason: """
HTTP 404 returned for "https://s3.fr-par.scw.cloud/s3.tousformateurs.fr/https%3A/static.xx.fbcdn.net/images/emoji.php/v9/tf0/1/16/1f338.png".\n
\n
Code: NoSuchKey\n
Message: The specified key does not exist.\n
Type: \n
Detail: \n
"""
trace: {
/app/vendor/league/flysystem/src/UnableToReadFile.php:24 {
League\Flysystem\UnableToReadFile::fromLocation(string $location, string $reason = '', ?Throwable $previous = null): UnableToReadFile …
› {
› $e = new static(rtrim("Unable to read file from location: {$location}. {$reason}"), 0, $previous);
› $e->location = $location;
}
/app/vendor/league/flysystem-async-aws-s3/AsyncAwsS3Adapter.php:526 {
League\Flysystem\AsyncAwsS3\AsyncAwsS3Adapter->readObject(string $path): ResultStream …
› } catch (Throwable $exception) {
› throw UnableToReadFile::fromLocation($path, $exception->getMessage(), $exception);
› }
}
/app/vendor/league/flysystem-async-aws-s3/AsyncAwsS3Adapter.php:154 {
League\Flysystem\AsyncAwsS3\AsyncAwsS3Adapter->read(string $path): string …
› {
› $body = $this->readObject($path);
›
}
/app/vendor/league/flysystem/src/Filesystem.php:76 {
League\Flysystem\Filesystem->read(string $location): string …
› {
› return $this->adapter->read($this->pathNormalizer->normalizePath($location));
› }
}
/app/src/Service/StorageService.php:65 {
App\Service\StorageService->read(string $path): string …
› try {
› return $this->uploadsStorage->read($path);
› } catch (FilesystemException|UnableToReadFile $exception) {
}
/app/src/Service/PDFService.php:173 {
App\Service\PDFService->convertImageToBase64(string $imgSrc, string $siteUrl): string …
› ? file_get_contents($this->projectDir.'/'.$path)
› : $this->storageService->read($path);
›
}
/app/src/Service/PDFService.php:260 {
App\Service\PDFService->formatHtmlForGotenberg(string $html): string …
› if (!str_starts_with($imgSrc, 'data:')) {
› $base64Src = $this->convertImageToBase64($imgSrc, $siteUrl);
› $img->setAttribute('src', $base64Src);
}
/app/src/Service/PDFService.php:147 {
App\Service\PDFService->prepareHtmlWithHeadersFooters(string $html): array …
› return [
› 'content' => $this->formatHtmlForGotenberg($contentHtml),
› 'header' => $this->formatHtmlForGotenberg($headerHtml),
}
/app/src/Service/PDFService.php:92 {
App\Service\PDFService->outputPDF(string $html): string …
› {
› $htmlParts = $this->prepareHtmlWithHeadersFooters($html);
›
}
/app/src/Controller/Front/TrainingController.php:120 {
App\Controller\Front\TrainingController->pdf(Training $training): Response …
›
› $response = $this->PDFService->outputPDF($html);
›
}
/app/vendor/symfony/http-kernel/HttpKernel.php:183 {
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Request $request, int $type = self::MAIN_REQUEST): Response …
› // call controller
› $response = $controller(...$arguments);
›
}
/app/vendor/symfony/http-kernel/HttpKernel.php:76 {
Symfony\Component\HttpKernel\HttpKernel->handle(Request $request, int $type = HttpKernelInterface::MAIN_REQUEST, bool $catch = true): Response …
› try {
› return $response = $this->handleRaw($request, $type);
› } catch (\Throwable $e) {
}
/app/vendor/symfony/http-kernel/Kernel.php:193 {
Symfony\Component\HttpKernel\Kernel->handle(Request $request, int $type = HttpKernelInterface::MAIN_REQUEST, bool $catch = true): Response …
› try {
› return $this->getHttpKernel()->handle($request, $type, $catch);
› } finally {
}
/app/vendor/runtime/frankenphp-symfony/src/Runner.php:38 {
Runtime\FrankenPhpSymfony\Runner->{closure:Runtime\FrankenPhpSymfony\Runner::run():33} …
› $sfRequest = Request::createFromGlobals();
› $sfResponse = $this->kernel->handle($sfRequest);
›
}
Runtime\FrankenPhpSymfony\Runner->{closure:Runtime\FrankenPhpSymfony\Runner::run():33}() {}
/app/vendor/runtime/frankenphp-symfony/src/Runner.php:45 {
Runtime\FrankenPhpSymfony\Runner->run(): int …
› do {
› $ret = \frankenphp_handle_request($handler);
›
}
/app/vendor/autoload_runtime.php:32 {
require_once …
› ->getRunner($app)
› ->run()
› );
}
/app/public/index.php:5 {
›
› require_once dirname(__DIR__).'/vendor/autoload_runtime.php';
›
arguments: {
"/app/vendor/autoload_runtime.php"
}
}
}
}
%PDF-1.4
%
1 0 obj
<>
endobj
3 0 obj
<>
endobj
5 0 obj
<> stream
x}J`kAA\hX\[V4M؟&.ހe(%o${x/@$*Ns˥QSLeZ}K}^'7v!y.'V>s<^(F>7V=fWtV%J-جS#LQ"'IB ENPyzfISPYH)@&/C~{
e61]shEH 0W'9]Y?bM4 ?K
endstream
endobj
4 0 obj
<> stream
x}ϹO`q)'`t18W'&rIE{"Ɔ+BZZ O,uM$I$Qo.j~ia
E^]tU6Ov^ 9bQxa_ƈ/a` lv*ghj.78Uv)fOESP@ߕ݈7lɑL `&.F25 ;X)pK2O6l9AѤgHCܟ2j"6)3!CGx7#h