Download the PHP package koh/typo3-fal-s3 without Composer

On this page you can find all versions of the php package koh/typo3-fal-s3. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package typo3-fal-s3

koh/typo3-fal-s3

A TYPO3 14 FAL driver for Amazon S3 (and S3-compatible storage) that lets a storage move off a mounted bucket without changing a single identifier, hash or URL.

Built on async-aws/s3 (Symfony HTTP client, no Guzzle version coupling, presigning included). Requires TYPO3 ^14.3 and PHP ^8.3.

Install

The private registry entry in this repository's composer.json resolves koh/* until the vendor is on Packagist.

Configure a storage

Either create a storage record with driver Amazon S3 (koh_fal_s3) and fill the FlexForm, or switch an existing Local storage in place:

The command is idempotent and keeps the previous configuration in sys_registry; --driver Local is the way back.

Every option can come from the environment, so the record stays deployment-neutral. Precedence, first non-null wins:

  1. KOH_FAL_S3_STORAGE<uid>_<KEY> (one storage)
  2. KOH_FAL_S3_<KEY> (every storage)
  3. $GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']['koh_fal_s3']['storages'][<uid>][key]
  4. $GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']['koh_fal_s3'][key] (TYPO3__EXTENSIONS__koh_fal_s3__<key> with helhum/config-loader)
  5. the FlexForm value
  6. the default
Key Env Default Meaning
bucket KOH_FAL_S3_BUCKET — (required) the bucket
region KOH_FAL_S3_REGION AWS_REGION, else eu-north-1
endpoint KOH_FAL_S3_ENDPOINT AWS; AWS_ENDPOINT_URL_S3/AWS_ENDPOINT_URL honoured; dualstack when AWS_USE_DUALSTACK_ENDPOINT=true S3-compatible servers
pathStyle KOH_FAL_S3_PATH_STYLE 0 path-style addressing (MinIO, RustFS)
keyPrefix KOH_FAL_S3_KEY_PREFIX `` storage root inside the bucket
publicBaseUri KOH_FAL_S3_PUBLIC_BASE_URI /fileadmin/ where the web server serves the bucket
excludedPrefixes KOH_FAL_S3_EXCLUDED_PREFIXES _typo3temp-assets/, pos-exchange/, malware-protection-resource-validation-object hidden, read-only prefixes (newline or comma separated)
cacheControlDefault KOH_FAL_S3_CACHE_CONTROL_DEFAULT public, max-age=86400 written as object metadata
cacheControlProcessed KOH_FAL_S3_CACHE_CONTROL_PROCESSED public, max-age=31536000, immutable for _processed_/
conditionalWrites KOH_FAL_S3_CONDITIONAL_WRITES 1 If-None-Match: * on new objects
streamMode KOH_FAL_S3_STREAM_MODE proxy non-public storage: proxy streams through PHP, redirect sends a 307 to a presigned URL
presignLifetime KOH_FAL_S3_PRESIGN_LIFETIME 900 seconds, 60–86400
malwareGate KOH_FAL_S3_MALWARE_GATE 0 refuse objects GuardDuty tagged THREATS_FOUND (one GetObjectTagging per object version, cached)
maxFolderOperationObjects KOH_FAL_S3_MAX_FOLDER_OPERATION_OBJECTS 10000 ceiling for one folder move/copy/delete
cacheLifetime KOH_FAL_S3_CACHE_LIFETIME 86400 metadata cache TTL, the safety net for writers outside TYPO3
negativeCacheLifetime KOH_FAL_S3_NEGATIVE_CACHE_LIFETIME 60 how long "does not exist" is believed
fallbackProcessingFolder (global) KOH_FAL_S3_FALLBACK_PROCESSING_FOLDER off e.g. 1:/_processed_/_fallback_/: processing folder of storage 0

Whether files are public is the storage record's Is public? flag, as with every FAL driver. Unchecked, TYPO3 hands out eID=dumpFile links and the driver streams (or redirects, see streamMode).

Cache backend

koh_fal_s3_meta defaults to the database backend so every replica shares one cache without extra infrastructure. In production point it at Redis/Valkey:

A TransientMemoryBackend works but turns every request into a fresh set of S3 calls; use it only in tests.

IAM

The role the pod runs under needs, on the bucket: s3:ListBucket, s3:GetBucketLocation — without ListBucket a missing object is a 403, not a 404, and every fileExists() becomes an error. On bucket/*: s3:GetObject, s3:PutObject, s3:DeleteObject, s3:AbortMultipartUpload, s3:ListMultipartUploadParts, and s3:GetObjectTagging if the malware gate is on. Nothing about versioning or ACLs.

Delivery

The driver returns /fileadmin/<identifier>; something has to serve that path from the bucket. The reference setup is a caddy-fs-s3 filesystem in the application's Caddy, under the same web-identity role, with Cache-Control rules keyed on /fileadmin/_processed_/*. A CDN in front of the bucket works the same way with publicBaseUri pointing at it.

Metrics

Every process writes one info line to the log channel Koh.FalS3.Metrics with the S3 requests it made per operation and the cache hit/miss count. Route it to a file or JSON writer to compare request volume with whatever the storage replaced:

Archived objects

Intelligent-Tiering archive tiers and Glacier classes make GetObject fail until the object is restored. The driver raises ObjectArchivedException (logged as a warning, a 503 with Retry-After when streaming) rather than a 500, and names the key. Keep archive tiers off buckets that serve a website.

Development

The functional suite runs the full DriverInterface contract against this driver and against the core's LocalDriver; the S3 tests skip when KOH_FAL_S3_TEST_ENDPOINT is unset.

License

MIT, see LICENSE.


All versions of typo3-fal-s3 with dependencies

PHP Build Version
Package Version
Requires php Version ^8.3
async-aws/core Version ^1.30.0
async-aws/s3 Version ^2.10.0
async-aws/simple-s3 Version ^2.1.1
psr/http-message Version ^1.1 || ^2.0
psr/log Version ^3.0.2
symfony/http-client Version ^7.3 || ^8.0
typo3/cms-core Version ^14.3
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package koh/typo3-fal-s3 contains the following files

Loading the files please wait ...