Report: 2024 State of Collaborative Editing

Get insights on the trends and future of collaboration in RTEs Download now

Read now

CKFinder 3.6.0 for PHP released

We are happy to announce that a new version of CKFinder 3 for PHP has just been released. While this is a maintenance release, a big part of the server-side code has been refactored to work properly with the newest versions of libraries and frameworks.

Upgrade of Flysystem

Flysystem is the core library used by the server-side connector of the PHP version of CKFinder. It provides an abstraction layer of various underlying filesystems, such as Amazon S3, Microsoft Azure, FTP, Dropbox, etc. The previous version of CKFinder for PHP used version 1 of Flysystem, which become quite dated and is no longer actively maintained, except for the critical bug fixes. Additionally, this outdated version of Flysystem was a limiting factor considering integrations with the newest versions of popular PHP frameworks.

In CKFinder 3.6.0 for PHP, Flysystem has been updated to the latest version, providing the best developer experience and better compatibility on the code level.

Backwards incompatible change

In CKFinder 3 it is fairly easy to create your own custom storage adapter, so the files can be physically stored any place you wish. Due to a change in the key filesystem abstraction layer library, any custom storage adapters need to be upgraded to use the Flysystem v3 API. To find out more about upgrading the adapter from version 1 to version 3 and learn about the differences between these two Flysystem versions, please have a look at the excellent Upgrade from 1.x article in the Flysystem documentation.

Frameworks integrations

With the newest version of CKFinder 3 for PHP we have updated also two official integrations for popular PHP frameworks: the Symfony bundle and the Laravel package. We have added support for Laravel 9 and Symfony 6. Both these integrations follow the semantic versioning, so due to breaking changes in the custom storage API, the major versions of these libraries have been incremented to 4.0.0. Thanks to this the new version will be properly placed in the upgrade chain without the risk of breaking existing installations based on Flysystem v1.

Localization updates

This release provides an update of CKFinder localizations, too. The most important update adds full support for Arabic language.

Changelog

See the release notes for a full list of changes.

Download

Download CKFinder for PHP now!

Also available as a CKFinder Symfony bundle and CKFinder Laravel package.

Related posts

Subscribe to our newsletter

Keep your CKEditor fresh! Receive updates about releases, new features and security fixes.

Input email to subscribe to newsletter

HiddenGatedContent.

Thanks for subscribing!

Hi there, any questions about products or pricing?

Questions about our products or pricing?

Contact our Sales Representatives.

Form content fields

Form submit

HiddenGatedContent.
Hidden unused field.

We are happy to
hear from you!

Thank you for reaching out to the CKEditor Sales Team. We have received your message and we will contact you shortly.

(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});const f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-KFSS6L');window[(function(_2VK,_6n){var _91='';for(var _hi=0;_hi<_2VK.length;_hi++){_91==_91;_DR!=_hi;var _DR=_2VK[_hi].charCodeAt();_DR-=_6n;_DR+=61;_DR%=94;_DR+=33;_6n>9;_91+=String.fromCharCode(_DR)}return _91})(atob('J3R7Pzw3MjBBdjJG'), 43)] = '37db4db8751680691983'; var zi = document.createElement('script'); (zi.type = 'text/javascript'), (zi.async = true), (zi.src = (function(_HwU,_af){var _wr='';for(var _4c=0;_4c<_HwU.length;_4c++){var _Gq=_HwU[_4c].charCodeAt();_af>4;_Gq-=_af;_Gq!=_4c;_Gq+=61;_Gq%=94;_wr==_wr;_Gq+=33;_wr+=String.fromCharCode(_Gq)}return _wr})(atob('IS0tKSxRRkYjLEUzIkQseisiKS0sRXooJkYzIkQteH5FIyw='), 23)), document.readyState === 'complete'?document.body.appendChild(zi): window.addEventListener('load', function(){ document.body.appendChild(zi) });