Known problems
Check the effective settings of the affected content element, the TYPO3 log and the refresh command's output. A feed that opens in a desktop browser can still fail on the application server. Persistent fallback can conceal an outage.
Scheduler mode has no output or shows the error message
Selecting fetch does not create a job. With no stored
response, the first frontend rendering attempts a fetch. On failure the plugin
shows its configured error or the default error and limits the page
cache to 60 seconds. Further initial attempts are throttled for 60 seconds,
including across cache flushes. A valid stored response has no expiry and
survives every cache flush.
- Apply the normal schema update:
tx_must exist. Without it, scheduler rendering cannot store a first response. Check the log for the schema warning and runfeeddisplay_ feed extension:in the deployed installation.setup - Verify the effective
feedandUrl fetch, including FlexForm overrides. Check that custom templates actually display the error message.Mode -
Run the command from the installation root with the same URL:
# Composer vendor/bin/typo3 feeddisplay:refresh --url='https://example.org/feed.xml' # Classic php typo3/sysext/core/bin/typo3 feeddisplay:refresh --url='https://example.org/feed.xml'Copied! - Expect
updatedorunchanged. Investigate failures in the command output and TYPO3 log, then configure recurring execution. Saving an Execute console commands task alone does not start TYPO3's Scheduler.
See Persistent feeds and scheduled refresh for first-fetch and refresh behavior. A URL
inherited only through TypoScript or Site Settings is not discovered by the
command until its first frontend attempt, unless passed explicitly with
--. It does not resolve whole pages' TypoScript.
A job succeeds but the plugin remains stale
- Different source spellings: URL hashes distinguish schemes, host spelling, query order, trailing slashes and encoding. Redirects do not merge source rows. Use the same trimmed URL in the plugin and command.
- Different environments: CLI and web must use the same database, deployed code and filesystem. Do not invoke the extension's test installation by mistake. In DDEV run the command inside the web container. Match proxy, credentials, DNS and TLS configuration between CLI and web.
- Wrong job or inactive cron: Confirm that Scheduler runs and invokes the
intended command. A scheduler-mode plugin never refreshes an existing
usable successful response by itself, regardless of
cache. An unusable document is an exception: see the replay guidance below.Duration - Multiple nodes or external caches: Host-local TYPO3 locks do not coordinate nodes. Configure shared locks and page invalidation across the deployment. CDNs and reverse proxies may need their own invalidation.
- Changing metadata: A revision includes response bytes and selected headers, not only visible items. A changing build date or redirect can invalidate scheduler pages even when visible content looks identical. Live pages are not tagged and keep their usual lifetime, even with a zero or negative feed cache duration.
The refresh command fails, skips sources or has no sources
- Command unavailable: Verify extension activation, complete files and rebuilt DI caches. Classic Git checkouts need their library build; TER packages already include it. See Installation.
- No sources found: An empty set succeeds. The command uses explicit
FlexForm URLs, stored source rows and additional
--arguments. It excludes deleted records and non-live workspace versions, but includes hidden content and legacy feed plugin records. Load inherited URLs once in the frontend or provide them explicitly.url - Retired or mistyped sources keep failing: Stored rows, including failed
first attempts, remain selected indefinitely. Both live and scheduler
sources are included. Correct the configuration and remove unused rows
with
feeddisplay:; nothing is automatically pruned.remove - Array options and commas: Repeat quoted
--options on the command line. The Scheduler form splits array options at commas. Automatic source selection avoids this form issue; use cron when an explicit URL contains a literal comma. Percent-encoding only helps if the source supports it and the plugin uses exactly the same spelling.url - A source is busy: A result of
lockedmeans skipped because another operation holds its lock. It is not an HTTP failure. Other sources continue. Repeated skips suggest overlapping or hanging processes. Check those processes before scheduling more frequent runs. - Oversized or slow response: Scheduled HTTP fetches, including first frontend fetches in that mode, cap stored response bodies at 2 MiB in total and each HTTP request's timeouts at ten seconds. Redirects can cause several requests; this is not a total time or transport download limit. Normal live fetches retain their previous limits. A source that works live can therefore fail in the job.
- HTTP or parse error: Login pages, bot challenges, invalid XML, redirect loops and intermittent 4xx/5xx responses can fail. Live fetches keep HTTP feed autodiscovery. Scheduled fetches read the configured URL directly, so configure the feed itself for that mode.
- Storage, locks or invalidation fail: Check the concrete exception and URL
in the TYPO3 log, database permissions/capacity and filesystem permissions.
Failed writes preserve the previous response; fresh live data can still
appear in that request. With a positive live
cache, its prepared result is cached for that duration despite the write error; a cache flush removes this temporary protection. Zero and negative values keep fetching. Failed page invalidation remains pending and is retried, including after an unchanged refresh.Duration
A mixed run continues after a failed source but returns a failure status overall. Do not assume that no source updated just because the task is marked failed.
No feed items are displayed
- No successful response: The configured error message is shown when no usable source exists. Live mode can continue using its display cache while the new schema is missing, but permanent protection requires the table.
- The feed is empty: A valid RSS/Atom feed without items is a successful replacement, not an error. The no-items message can appear instead of the fetch-error message.
- Server access differs from browser access: Check application-server DNS, firewall, proxy, authentication and certificate trust through TYPO3's HTTP configuration. Disabling TLS verification is not a correction for missing certificates.
- Local file inaccessible: Use a path visible inside the PHP container, including readable symlink targets. For jobs use absolute paths and the application user with equivalent read permissions. Relative paths depend on the process's working directory and can point to different files in CLI.
- Customization suppresses output: Check getter fields,
max, templates, conditions andFeed Count Singlelisteners. Listener errors propagate normally; they are not disguised as feed download errors.Feed Data Event - Broken stored document: A valid prepared display-cache hit remains usable without reading the BLOB. On a miss, checksum, structure and header errors are diagnosed. New documents restore the selected parser input without repeating discovery. If reconstruction fails, the frontend attempts repair no more than once every 60 seconds; failed repair keeps the payload and success time. A manual refresh can replace the document immediately. No SimplePie PHP objects are persisted.
Images trigger requests
Feed images are downloaded only when their temporary file is missing. Rendering can therefore still make an image HTTP request in scheduler mode, after a temporary-file cleanup or when an image is used for the first time. Custom getters and event listeners may also make their own requests.
The plugin is missing or displays the example feed
- Include the
erhaweb/Site Set in the active site's dependencies, or static TypoScript for a template-record setup. Check the actual site's rootline. See Site Set and settings.feed- display - Replace the default
https://URL in the relevant settings. A saved FlexForm can override the value you changed site-wide.typo3. org/ rss - Check content/page visibility, language, access restrictions and the rendered column. These can prevent plugin execution entirely.
- For legacy
CType = list/list_records, runtype = feeddisplay_ pi1 feedwhen required. The current content type isDisplay CType Migration feeddisplay_. Also check backend-group permissions for editors.pi1
Settings seem ignored
- Inspect the content element's FlexForm as well as Site Settings and later
TypoScript assignments. Use YAML
fetchin site settings and TypoScriptMode: scheduler fetchin setup, with the full plugin path.Mode = scheduler ignorebelongs to the plugin, notFlex Form Settings If Empty settings. Keepfetchin that list for inheritance. An unignored empty or unknown mode uses live behavior.Mode - The default ignore list can treat FlexForm
0as inherited. To explicitly select zero, adjust that setting's inheritance rule or the inherited value. getandFields. feed getselect SimplePie getters. Check exact names, supported arguments and the data structure expected by custom templates. Cropping/HTML settings affect display, not the stored document.Fields. items
Content is stale or changes at unexpected times
- A positive live
cachelimits attempts per shared source, including after failures. Different plugin options do not keep independent old copies of the feed. A plugin with a shorter interval can update all plugins of that URL.Duration - Cache flushes rebuild display arrays from the persistent source without
forcing a download. Use
feeddisplay:to force an attempt. The last successful response has no expiry; monitor failures in logs/jobs.refresh cacheor a negative value does not disable TYPO3 page caching. A cached page may avoid plugin execution altogether. Live page-cache lifetimes remain unchanged; live pages are not invalidated by source changes. Only scheduler pages carry source tags. A successful changed revision from either a live plugin or the job invalidates those scheduler pages.Duration = 0 - A scheduler page whose source changes or is removed during rendering is discarded immediately after TYPO3 writes its cache entry. The running response can still contain the older revision; the next request rebuilds it. If checking a source revision fails, the warning identifies its hash and the page-cache identifier. That source remains unverified. A failed removal is diagnosed as well. Check database/cache availability; reverse-proxy, CDN and third-party static caches require their own handling.
- Mixed live/scheduler plugins of the same URL can prevent effective page
caching. In particular, if a scheduler plugin renders before a live plugin
with
cacheand every fetch changes the source revision, every rendering creates an inconsistent page that is discarded. Use one mode for that source on the page. Mixed mode alone is not sufficient to cause this: live first, followed by scheduler using the same revision, can remain cacheable.Duration <= 0 - Existing 3.0.2 display entries remain valid for their original lifetime until the first durable response exists. They cannot protect against a full cache flush before that first successful fetch.
- Removing a source does not disable configured plugins. Another frontend
attempt or refresh scan can recreate it. Remove its configuration as well
when retiring it.
feeddisplay:requires explicit URLs, is safe to repeat and reports lock conflicts or failed invalidation for manual retry.remove
If a problem remains, report its effective configuration, TYPO3/PHP versions, command output and relevant log entry in the issue tracker.