Joomla Cache, HTTP & feeds changes: Joomla 3 → 4, 5 and 6

24 issues in this guide

Supporting services — cache, HTTP, feeds, and remote clients — still ship as J* globals in older extensions. This guide groups 24 entries: JBrowser, JBrowser::isSSLConnection(), JCache, JCacheStorageCachelite, JCacheStorage::test(), JCacheController, JCacheStorageFile, JCacheStorage, JClientWrapperHelper, JClientFtp, and 14 more. The replacement pattern is the namespaced Cache, Http, Feed, Client, and Environment\Browser classes, isSupported() instead of storage test() methods, header values read as arrays, and FeedFactory instead of SimplePie. FTP and LDAP clients move to FtpClient / LdapClient. SSL checks belong on the application (isSSLConnection()) rather than legacy browser helpers where that API moved. Hop mix: 7 at Joomla 3 → 4; 17 at Joomla 5 → 6. Alias removals dominate J5→J6; Cache_Lite and some HTTP header assumptions already fail on Joomla 4. Patch these when your extension touches updates, web services, or remote sync, using each catalog before/after below. Catalog replacements in this guide include JBrowser → Joomla\CMS\Environment\Browser; JBrowser::isSSLConnection() → $app->isSSLConnection(); JCache → Joomla\CMS\Cache\Cache; JCacheStorageCachelite → File / Redis / Memcached storage — not Cache_Lite. Open each h2 anchor for the full before/after, fix list, and error strings shipped in the reference data.

JBROWSER-CLASS-001

JBrowser

JBrowser class name

JBrowser is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JBrowser" not found.

JBrowser → Joomla\CMS\Environment\Browser

Dies at Joomla 5 → 6
Dies at Joomla 5 → 6J3: Works nativelyJ4: Alias (old name still resolves)J6: Removed — fatalBC plugin: covers the class nameMechanical renameJoomla API

What you will see

  • Class "JBrowser" not found
  • Class 'JBrowser' not found
  • Failed to open stream: JBrowser

Symptoms people search

white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility

Replace this code

Swap JBrowser for Joomla\CMS\Environment\Browser.

Joomla 3

Remove or stop calling this

JBrowser::getInstance();
// or new JBrowser()

Joomla 4 / 6

Use this instead

use Joomla\CMS\Environment\Browser;

// Call the namespaced class. Do not keep the J prefix.

How to fix it

  1. 1Add a use statement for Joomla\CMS\Environment\Browser.
  2. 2Replace every JBrowser with the short class name from that use line.
  3. 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.

Also known as

JBrowser · Joomla\CMS\Environment\Browser · class alias · J prefix

JBROWSER-ISSSL-001

JBrowser::isSSLConnection()

JBrowser::isSSLConnection()

SSL detection moved to the application. The browser method is gone.

JBrowser::isSSLConnection() → $app->isSSLConnection()

Dies at Joomla 3 → 4
Dies at Joomla 3 → 4J3: Works nativelyJ4: Removed — fatalJ6: Removed — fatalBC plugin: no — already dead on J4Mechanical renameJoomla API

What you will see

  • Call to undefined method ...::isSSLConnection

Symptoms people search

https detection wrong

Replace this code

Swap JBrowser::isSSLConnection() for $app->isSSLConnection().

Joomla 3

Remove or stop calling this

if (JBrowser::getInstance()->isSSLConnection()) {}

Joomla 4 / 6

Use this instead

if (Factory::getApplication()->isSSLConnection()) {}

How to fix it

  1. 1Call isSSLConnection() on the application.

Also known as

isSSLConnection

JCACHE-CLASS-001

JCache

JCache class name

JCache is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JCache" not found.

JCache → Joomla\CMS\Cache\Cache

Dies at Joomla 5 → 6
Dies at Joomla 5 → 6J3: Works nativelyJ4: Alias (old name still resolves)J6: Removed — fatalBC plugin: covers the class nameMechanical renameJoomla API

What you will see

  • Class "JCache" not found
  • Class 'JCache' not found
  • Failed to open stream: JCache

Symptoms people search

white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility

Replace this code

Swap JCache for Joomla\CMS\Cache\Cache.

Joomla 3

Remove or stop calling this

JCache::getInstance();
// or new JCache()

Joomla 4 / 6

Use this instead

use Joomla\CMS\Cache\Cache;

// Call the namespaced class. Do not keep the J prefix.

How to fix it

  1. 1Add a use statement for Joomla\CMS\Cache\Cache.
  2. 2Replace every JCache with the short class name from that use line.
  3. 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.

Also known as

JCache · Joomla\CMS\Cache\Cache · class alias · J prefix

JCACHE-LITE-001

JCacheStorageCachelite

Cache_Lite / JCacheStorageCacheLite

The PEAR Cache_Lite handler was removed.

JCacheStorageCachelite → File / Redis / Memcached storage — not Cache_Lite

Dies at Joomla 3 → 4
Dies at Joomla 3 → 4J3: Works nativelyJ4: Removed — fatalJ6: Removed — fatalBC plugin: no — already dead on J4Architecture change — no auto-fixJoomla API

What you will see

  • Class "JCacheStorageCachelite" not found
  • Class "Cache_Lite" not found

Symptoms people search

cache lite fatal · cachelite

Replace this code

Swap JCacheStorageCachelite for File / Redis / Memcached storage — not Cache_Lite.

Joomla 3

Remove or stop calling this

$config['cache_handler'] = 'cachelite';

Joomla 4 / 6

Use this instead

Use file, redis, or memcached. Cache_Lite is not in Joomla 4.

How to fix it

  1. 1Change Global Configuration cache handler.
  2. 2Remove cachelite from extension code.

Also known as

Cache_Lite · cachelite · JCacheStorageCachelite

There is no 1:1 swap for this one. The architecture changed. If you cannot rewrite it, Infyways can.

JCACHE-TEST-001

JCacheStorage::test()

JCacheStorage::test() / output start-end

test() became isSupported(). Output cache start/end were removed.

JCacheStorage::test() → isSupported(); output cache start/end removed

Dies at Joomla 3 → 4
Dies at Joomla 3 → 4J3: Works nativelyJ4: Removed — fatalJ6: Removed — fatalBC plugin: no — already dead on J4Patch possible — review itJoomla API

What you will see

  • Call to undefined method ...::test
  • Call to undefined method ...::start

Symptoms people search

memcache test fatal · output cache

Replace this code

Swap JCacheStorage::test() for isSupported(); output cache start/end removed.

Joomla 3

Remove or stop calling this

if (JCacheStorageMemcache::test()) {}
$cache->start($id); ... $cache->end();

Joomla 4 / 6

Use this instead

if (MemcachedStorage::isSupported()) {}
// Do not use CacheControllerOutput::start/end — they are gone.

How to fix it

  1. 1Rename test() to isSupported().
  2. 2Rewrite output caching; do not call start/end.

Also known as

JCacheStorage::test · CacheControllerOutput

There is no 1:1 swap for this one. The architecture changed. If you cannot rewrite it, Infyways can.

JCACHECONTROLLER-CLASS-001

JCacheController

JCacheController class name

JCacheController is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JCacheController" not found.

JCacheController → Joomla\CMS\Cache\CacheController

Dies at Joomla 5 → 6
Dies at Joomla 5 → 6J3: Works nativelyJ4: Alias (old name still resolves)J6: Removed — fatalBC plugin: covers the class nameMechanical renameJoomla API

What you will see

  • Class "JCacheController" not found
  • Class 'JCacheController' not found
  • Failed to open stream: JCacheController

Symptoms people search

white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility

Replace this code

Swap JCacheController for Joomla\CMS\Cache\CacheController.

Joomla 3

Remove or stop calling this

JCacheController::getInstance();
// or new JCacheController()

Joomla 4 / 6

Use this instead

use Joomla\CMS\Cache\CacheController;

// Call the namespaced class. Do not keep the J prefix.

How to fix it

  1. 1Add a use statement for Joomla\CMS\Cache\CacheController.
  2. 2Replace every JCacheController with the short class name from that use line.
  3. 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.

Also known as

JCacheController · Joomla\CMS\Cache\CacheController · class alias · J prefix

JCACHEFILE-CLASS-001

JCacheStorageFile

JCacheStorageFile class name

JCacheStorageFile is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JCacheStorageFile" not found.

JCacheStorageFile → Joomla\CMS\Cache\Storage\FileStorage

Dies at Joomla 5 → 6
Dies at Joomla 5 → 6J3: Works nativelyJ4: Alias (old name still resolves)J6: Removed — fatalBC plugin: covers the class nameMechanical renameJoomla API

What you will see

  • Class "JCacheStorageFile" not found
  • Class 'JCacheStorageFile' not found
  • Failed to open stream: JCacheStorageFile

Symptoms people search

white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility

Replace this code

Swap JCacheStorageFile for Joomla\CMS\Cache\Storage\FileStorage.

Joomla 3

Remove or stop calling this

JCacheStorageFile::getInstance();
// or new JCacheStorageFile()

Joomla 4 / 6

Use this instead

use Joomla\CMS\Cache\Storage\FileStorage;

// Call the namespaced class. Do not keep the J prefix.

How to fix it

  1. 1Add a use statement for Joomla\CMS\Cache\Storage\FileStorage.
  2. 2Replace every JCacheStorageFile with the short class name from that use line.
  3. 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.

Also known as

JCacheStorageFile · Joomla\CMS\Cache\Storage\FileStorage · class alias · J prefix

JCACHESTORAGE-CLASS-001

JCacheStorage

JCacheStorage class name

JCacheStorage is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JCacheStorage" not found.

JCacheStorage → Joomla\CMS\Cache\CacheStorage

Dies at Joomla 5 → 6
Dies at Joomla 5 → 6J3: Works nativelyJ4: Alias (old name still resolves)J6: Removed — fatalBC plugin: covers the class nameMechanical renameJoomla API

What you will see

  • Class "JCacheStorage" not found
  • Class 'JCacheStorage' not found
  • Failed to open stream: JCacheStorage

Symptoms people search

white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility

Replace this code

Swap JCacheStorage for Joomla\CMS\Cache\CacheStorage.

Joomla 3

Remove or stop calling this

JCacheStorage::getInstance();
// or new JCacheStorage()

Joomla 4 / 6

Use this instead

use Joomla\CMS\Cache\CacheStorage;

// Call the namespaced class. Do not keep the J prefix.

How to fix it

  1. 1Add a use statement for Joomla\CMS\Cache\CacheStorage.
  2. 2Replace every JCacheStorage with the short class name from that use line.
  3. 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.

Also known as

JCacheStorage · Joomla\CMS\Cache\CacheStorage · class alias · J prefix

JCLIENT-WRAPPER-001

JClientWrapperHelper

JClientWrapperHelper and other wrappers

Wrapper classes (JFormWrapper, JHttpWrapperFactory, language wrappers, client wrappers) were deleted in Joomla 4. Call the real static API.

JClientWrapperHelper → Call ClientHelper / FormHelper / HttpFactory statically

Dies at Joomla 3 → 4
Dies at Joomla 3 → 4J3: Works nativelyJ4: Removed — fatalJ6: Removed — fatalBC plugin: no — already dead on J4Mechanical renameJoomla API

What you will see

  • Class "JClientWrapperHelper" not found
  • Class "JFormWrapperHelper" not found
  • Class "JHttpWrapperFactory" not found
  • Class "JLanguageWrapperText" not found

Symptoms people search

wrapper helper fatal

Replace this code

Swap JClientWrapperHelper for Call ClientHelper / FormHelper / HttpFactory statically.

Joomla 3

Remove or stop calling this

(new JClientWrapperHelper())->getCredentials('ftp');

Joomla 4 / 6

Use this instead

ClientHelper::getCredentials('ftp');

How to fix it

  1. 1Unwrap. Call the helper class directly.

Also known as

JClientWrapperHelper · JFormWrapperHelper · JHttpWrapperFactory · JLanguageWrapperText · JUserWrapperHelper

JCLIENTFTP-CLASS-001

JClientFtp

JClientFtp class name

JClientFtp is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JClientFtp" not found.

JClientFtp → Joomla\CMS\Client\FtpClient

Dies at Joomla 5 → 6
Dies at Joomla 5 → 6J3: Works nativelyJ4: Alias (old name still resolves)J6: Removed — fatalBC plugin: covers the class nameMechanical renameJoomla API

What you will see

  • Class "JClientFtp" not found
  • Class 'JClientFtp' not found
  • Failed to open stream: JClientFtp

Symptoms people search

white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility

Replace this code

Swap JClientFtp for Joomla\CMS\Client\FtpClient.

Joomla 3

Remove or stop calling this

JClientFtp::getInstance();
// or new JClientFtp()

Joomla 4 / 6

Use this instead

use Joomla\CMS\Client\FtpClient;

// Call the namespaced class. Do not keep the J prefix.

How to fix it

  1. 1Add a use statement for Joomla\CMS\Client\FtpClient.
  2. 2Replace every JClientFtp with the short class name from that use line.
  3. 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.

Also known as

JClientFtp · Joomla\CMS\Client\FtpClient · class alias · J prefix · JFTP

JCLIENTHELPER-CLASS-001

JClientHelper

JClientHelper class name

JClientHelper is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JClientHelper" not found.

JClientHelper → Joomla\CMS\Client\ClientHelper

Dies at Joomla 5 → 6
Dies at Joomla 5 → 6J3: Works nativelyJ4: Alias (old name still resolves)J6: Removed — fatalBC plugin: covers the class nameMechanical renameJoomla API

What you will see

  • Class "JClientHelper" not found
  • Class 'JClientHelper' not found
  • Failed to open stream: JClientHelper

Symptoms people search

white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility

Replace this code

Swap JClientHelper for Joomla\CMS\Client\ClientHelper.

Joomla 3

Remove or stop calling this

JClientHelper::getInstance();
// or new JClientHelper()

Joomla 4 / 6

Use this instead

use Joomla\CMS\Client\ClientHelper;

// Call the namespaced class. Do not keep the J prefix.

How to fix it

  1. 1Add a use statement for Joomla\CMS\Client\ClientHelper.
  2. 2Replace every JClientHelper with the short class name from that use line.
  3. 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.

Also known as

JClientHelper · Joomla\CMS\Client\ClientHelper · class alias · J prefix

JCLIENTLDAP-CLASS-001

JClientLdap

JClientLdap class name

JClientLdap is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JClientLdap" not found.

JClientLdap → Joomla\Ldap\LdapClient

Dies at Joomla 5 → 6
Dies at Joomla 5 → 6J3: Works nativelyJ4: Alias (old name still resolves)J6: Removed — fatalBC plugin: covers the class nameMechanical renameJoomla API

What you will see

  • Class "JClientLdap" not found
  • Class 'JClientLdap' not found
  • Failed to open stream: JClientLdap

Symptoms people search

white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility

Replace this code

Swap JClientLdap for Joomla\Ldap\LdapClient.

Joomla 3

Remove or stop calling this

JClientLdap::getInstance();
// or new JClientLdap()

Joomla 4 / 6

Use this instead

use Joomla\Ldap\LdapClient;

// Call the namespaced class. Do not keep the J prefix.

How to fix it

  1. 1Add a use statement for Joomla\Ldap\LdapClient.
  2. 2Replace every JClientLdap with the short class name from that use line.
  3. 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.

Also known as

JClientLdap · Joomla\Ldap\LdapClient · class alias · J prefix · JLDAP

JFEED-CLASS-001

JFeed

JFeed class name

JFeed is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JFeed" not found.

JFeed → Joomla\CMS\Feed\Feed

Dies at Joomla 5 → 6
Dies at Joomla 5 → 6J3: Works nativelyJ4: Alias (old name still resolves)J6: Removed — fatalBC plugin: covers the class nameMechanical renameJoomla API

What you will see

  • Class "JFeed" not found
  • Class 'JFeed' not found
  • Failed to open stream: JFeed

Symptoms people search

white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility

Replace this code

Swap JFeed for Joomla\CMS\Feed\Feed.

Joomla 3

Remove or stop calling this

JFeed::getInstance();
// or new JFeed()

Joomla 4 / 6

Use this instead

use Joomla\CMS\Feed\Feed;

// Call the namespaced class. Do not keep the J prefix.

How to fix it

  1. 1Add a use statement for Joomla\CMS\Feed\Feed.
  2. 2Replace every JFeed with the short class name from that use line.
  3. 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.

Also known as

JFeed · Joomla\CMS\Feed\Feed · class alias · J prefix

JFEEDENTRY-CLASS-001

JFeedEntry

JFeedEntry class name

JFeedEntry is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JFeedEntry" not found.

JFeedEntry → Joomla\CMS\Feed\FeedEntry

Dies at Joomla 5 → 6
Dies at Joomla 5 → 6J3: Works nativelyJ4: Alias (old name still resolves)J6: Removed — fatalBC plugin: covers the class nameMechanical renameJoomla API

What you will see

  • Class "JFeedEntry" not found
  • Class 'JFeedEntry' not found
  • Failed to open stream: JFeedEntry

Symptoms people search

white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility

Replace this code

Swap JFeedEntry for Joomla\CMS\Feed\FeedEntry.

Joomla 3

Remove or stop calling this

JFeedEntry::getInstance();
// or new JFeedEntry()

Joomla 4 / 6

Use this instead

use Joomla\CMS\Feed\FeedEntry;

// Call the namespaced class. Do not keep the J prefix.

How to fix it

  1. 1Add a use statement for Joomla\CMS\Feed\FeedEntry.
  2. 2Replace every JFeedEntry with the short class name from that use line.
  3. 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.

Also known as

JFeedEntry · Joomla\CMS\Feed\FeedEntry · class alias · J prefix

JFEEDFACTORY-CLASS-001

JFeedFactory

JFeedFactory class name

JFeedFactory is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JFeedFactory" not found.

JFeedFactory → Joomla\CMS\Feed\FeedFactory

Dies at Joomla 5 → 6
Dies at Joomla 5 → 6J3: Works nativelyJ4: Alias (old name still resolves)J6: Removed — fatalBC plugin: covers the class nameMechanical renameJoomla API

What you will see

  • Class "JFeedFactory" not found
  • Class 'JFeedFactory' not found
  • Failed to open stream: JFeedFactory

Symptoms people search

white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility

Replace this code

Swap JFeedFactory for Joomla\CMS\Feed\FeedFactory.

Joomla 3

Remove or stop calling this

JFeedFactory::getInstance();
// or new JFeedFactory()

Joomla 4 / 6

Use this instead

use Joomla\CMS\Feed\FeedFactory;

// Call the namespaced class. Do not keep the J prefix.

How to fix it

  1. 1Add a use statement for Joomla\CMS\Feed\FeedFactory.
  2. 2Replace every JFeedFactory with the short class name from that use line.
  3. 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.

Also known as

JFeedFactory · Joomla\CMS\Feed\FeedFactory · class alias · J prefix

JFEEDPARSER-CLASS-001

JFeedParser

JFeedParser class name

JFeedParser is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JFeedParser" not found.

JFeedParser → Joomla\CMS\Feed\FeedParser

Dies at Joomla 5 → 6
Dies at Joomla 5 → 6J3: Works nativelyJ4: Alias (old name still resolves)J6: Removed — fatalBC plugin: covers the class nameMechanical renameJoomla API

What you will see

  • Class "JFeedParser" not found
  • Class 'JFeedParser' not found
  • Failed to open stream: JFeedParser

Symptoms people search

white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility

Replace this code

Swap JFeedParser for Joomla\CMS\Feed\FeedParser.

Joomla 3

Remove or stop calling this

JFeedParser::getInstance();
// or new JFeedParser()

Joomla 4 / 6

Use this instead

use Joomla\CMS\Feed\FeedParser;

// Call the namespaced class. Do not keep the J prefix.

How to fix it

  1. 1Add a use statement for Joomla\CMS\Feed\FeedParser.
  2. 2Replace every JFeedParser with the short class name from that use line.
  3. 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.

Also known as

JFeedParser · Joomla\CMS\Feed\FeedParser · class alias · J prefix

JFTP-CLASS-001

JFTP

JFTP class name

JFTP is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JFTP" not found.

JFTP → Joomla\CMS\Client\FtpClient

Dies at Joomla 5 → 6
Dies at Joomla 5 → 6J3: Works nativelyJ4: Alias (old name still resolves)J6: Removed — fatalBC plugin: covers the class nameMechanical renameJoomla API

What you will see

  • Class "JFTP" not found
  • Class 'JFTP' not found
  • Failed to open stream: JFTP

Symptoms people search

white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility

Replace this code

Swap JFTP for Joomla\CMS\Client\FtpClient.

Joomla 3

Remove or stop calling this

JFTP::getInstance();
// or new JFTP()

Joomla 4 / 6

Use this instead

use Joomla\CMS\Client\FtpClient;

// Call the namespaced class. Do not keep the J prefix.

How to fix it

  1. 1Add a use statement for Joomla\CMS\Client\FtpClient.
  2. 2Replace every JFTP with the short class name from that use line.
  3. 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.

Also known as

JFTP · Joomla\CMS\Client\FtpClient · class alias · J prefix · JClientFtp

JHTTP-CLASS-001

JHttp

JHttp class name

JHttp is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JHttp" not found.

JHttp → Joomla\CMS\Http\Http

Dies at Joomla 5 → 6
Dies at Joomla 5 → 6J3: Works nativelyJ4: Alias (old name still resolves)J6: Removed — fatalBC plugin: covers the class nameMechanical renameJoomla API

What you will see

  • Class "JHttp" not found
  • Class 'JHttp' not found
  • Failed to open stream: JHttp

Symptoms people search

white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility

Replace this code

Swap JHttp for Joomla\CMS\Http\Http.

Joomla 3

Remove or stop calling this

JHttp::getInstance();
// or new JHttp()

Joomla 4 / 6

Use this instead

use Joomla\CMS\Http\Http;

// Call the namespaced class. Do not keep the J prefix.

How to fix it

  1. 1Add a use statement for Joomla\CMS\Http\Http.
  2. 2Replace every JHttp with the short class name from that use line.
  3. 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.

Also known as

JHttp · Joomla\CMS\Http\Http · class alias · J prefix

JHTTP-HEADERS-001

$response->headers['Content-Type'] as string

JHttp response headers are arrays

Joomla 4 HTTP responses follow PSR-7: a header name maps to a list of values, not a string.

$response->headers['Content-Type'] as string → Read header values as an array

Dies at Joomla 3 → 4
Dies at Joomla 3 → 4J3: Works nativelyJ4: Changed behaviourJ6: Changed behaviourBC plugin: not applicablePatch possible — review itJoomla API

Symptoms people search

content-type check fails · JHttp headers

Replace this code

Swap $response->headers['Content-Type'] as string for Read header values as an array.

Joomla 3

Remove or stop calling this

$type = $response->headers['Content-Type'];

Joomla 4 / 6

Use this instead

$type = $response->getHeader('Content-Type')[0] ?? '';

How to fix it

  1. 1Use getHeader() and take [0].
  2. 2Do not strcmp the whole headers array.

Also known as

JHttp · getHeader

JHTTPCURL-CLASS-001

JHttpTransportCurl

JHttpTransportCurl class name

JHttpTransportCurl is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JHttpTransportCurl" not found.

JHttpTransportCurl → Joomla\CMS\Http\Transport\CurlTransport

Dies at Joomla 5 → 6
Dies at Joomla 5 → 6J3: Works nativelyJ4: Alias (old name still resolves)J6: Removed — fatalBC plugin: covers the class nameMechanical renameJoomla API

What you will see

  • Class "JHttpTransportCurl" not found
  • Class 'JHttpTransportCurl' not found
  • Failed to open stream: JHttpTransportCurl

Symptoms people search

white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility

Replace this code

Swap JHttpTransportCurl for Joomla\CMS\Http\Transport\CurlTransport.

Joomla 3

Remove or stop calling this

JHttpTransportCurl::getInstance();
// or new JHttpTransportCurl()

Joomla 4 / 6

Use this instead

use Joomla\CMS\Http\Transport\CurlTransport;

// Call the namespaced class. Do not keep the J prefix.

How to fix it

  1. 1Add a use statement for Joomla\CMS\Http\Transport\CurlTransport.
  2. 2Replace every JHttpTransportCurl with the short class name from that use line.
  3. 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.

Also known as

JHttpTransportCurl · Joomla\CMS\Http\Transport\CurlTransport · class alias · J prefix

JHTTPFACTORY-CLASS-001

JHttpFactory

JHttpFactory class name

JHttpFactory is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JHttpFactory" not found.

JHttpFactory → Joomla\CMS\Http\HttpFactory

Dies at Joomla 5 → 6
Dies at Joomla 5 → 6J3: Works nativelyJ4: Alias (old name still resolves)J6: Removed — fatalBC plugin: covers the class nameMechanical renameJoomla API

What you will see

  • Class "JHttpFactory" not found
  • Class 'JHttpFactory' not found
  • Failed to open stream: JHttpFactory

Symptoms people search

white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility

Replace this code

Swap JHttpFactory for Joomla\CMS\Http\HttpFactory.

Joomla 3

Remove or stop calling this

JHttpFactory::getInstance();
// or new JHttpFactory()

Joomla 4 / 6

Use this instead

use Joomla\CMS\Http\HttpFactory;

// Call the namespaced class. Do not keep the J prefix.

How to fix it

  1. 1Add a use statement for Joomla\CMS\Http\HttpFactory.
  2. 2Replace every JHttpFactory with the short class name from that use line.
  3. 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.

Also known as

JHttpFactory · Joomla\CMS\Http\HttpFactory · class alias · J prefix

JLDAP-CLASS-001

JLDAP

JLDAP

The JLDAP class name is obsolete. Use the LDAP package client.

JLDAP → Joomla\Ldap\LdapClient

Dies at Joomla 3 → 4
Dies at Joomla 3 → 4J3: Works nativelyJ4: Removed — fatalJ6: Removed — fatalBC plugin: no — already dead on J4Patch possible — review itJoomla API

What you will see

  • Class "JLDAP" not found

Symptoms people search

LDAP login 500

Replace this code

Swap JLDAP for Joomla\Ldap\LdapClient.

Joomla 3

Remove or stop calling this

$ldap = new JLDAP($opts);

Joomla 4 / 6

Use this instead

use Joomla\Ldap\LdapClient;

How to fix it

  1. 1Replace JLDAP with LdapClient.

Also known as

JLDAP · JClientLdap

JWEBCLIENT-CLASS-001

JWebClient

JWebClient class name

JWebClient is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JWebClient" not found.

JWebClient → Joomla\CMS\Environment\Browser

Dies at Joomla 5 → 6
Dies at Joomla 5 → 6J3: Works nativelyJ4: Alias (old name still resolves)J6: Removed — fatalBC plugin: covers the class nameMechanical renameJoomla API

What you will see

  • Class "JWebClient" not found
  • Class 'JWebClient' not found
  • Failed to open stream: JWebClient

Symptoms people search

white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility

Replace this code

Swap JWebClient for Joomla\CMS\Environment\Browser.

Joomla 3

Remove or stop calling this

JWebClient::getInstance();
// or new JWebClient()

Joomla 4 / 6

Use this instead

use Joomla\CMS\Environment\Browser;

// Call the namespaced class. Do not keep the J prefix.

How to fix it

  1. 1Add a use statement for Joomla\CMS\Environment\Browser.
  2. 2Replace every JWebClient with the short class name from that use line.
  3. 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.

Also known as

JWebClient · Joomla\CMS\Environment\Browser · class alias · J prefix

SIMPLEPIE-001

SimplePie

SimplePie library in core

SimplePie was removed from Joomla 4. Use the CMS Feed package.

SimplePie → Joomla\CMS\Feed\FeedFactory

Dies at Joomla 3 → 4
Dies at Joomla 3 → 4J3: Works nativelyJ4: Removed — fatalJ6: Removed — fatalBC plugin: no — already dead on J4Patch possible — review itJoomla API

What you will see

  • Class "SimplePie" not found

Symptoms people search

RSS module 500

Replace this code

Swap SimplePie for Joomla\CMS\Feed\FeedFactory.

Joomla 3

Remove or stop calling this

$feed = new SimplePie(); $feed->set_feed_url($url);

Joomla 4 / 6

Use this instead

$feed = (new \Joomla\CMS\Feed\FeedFactory())->getFeed($url);

How to fix it

  1. 1Replace SimplePie with FeedFactory.

Also known as

SimplePie · JFeedReader

Start a project

Have something
to build?

Tell us what you are building. You will hear back from an engineer within one business day.

hello@infyways.com · Remote, working across time zones

Tell us about your project

Fill out the quick form and we'll reach out.