X3 Photo Gallery Support Forums

User avatar
X3 Wizard
Topic Author
Posts: 12963
Joined: 30 Sep 2006, 03:37

New Release X3.23.0 :deer:

24 Jun 2017, 15:52

X3.23.0 :deer:
Finally X3.23.0 is here, loaded with updates to the X3 core. This release doesn't offer any exciting new features :tired_face:but there are tons of improvements which will benefit everyone :relieved:. The long update-list below is technical and maybe boring, but some of you may find it interesting to browse :punch: X3.23.0 is essentially a huge update!

:star:Highlights :star:
  • Massive core clean-up, which benefits user website management and future X3 versions.
  • X3 Panel improvements, performance boost and new features.
  • New X3 Installer / x3_installer.php
  • New X3 Updater / x3_updater.php
  • Logical improvements to many features.
  • Official support for servers Nginx, Microsoft IIS and improved Apache support.
  • Brand new .htaccess (Apache) file written from scratch for best practice and maximum efficiency.
  • Many bug fixes.
  • Performance improvements.

Use the new x3_updater.php *see instructions below.


Version 0.22.0 => X3.23.0
We are bumping X3 version from 0.22.0 to X3.23.0 because it is logical and makes more sense. X3 will use semantic versioning [major.minor.patch] => [X3.23.0] where "X3" will basically never change. Second digit (minor) will change for each X3 update, while last digit is for patches and bug-fixes to current release.

New X3 Installer
Alongside X3.23.0, we have launched a new X3 Installer PHP script which makes it incredibly fast and simple to install latest X3 into any website location.
  • Downloads and installs latest X3 directly on web server (super fast!).
  • Avoid having to download zip, unpack zip, and upload zip contents slowly by FTP.
  • Installation only takes 10 - 20 seconds.
  • Option to install X3 with- or without sample content.
  • Solves issues with permissions on some servers since all files are owned by the WWW-user.
  • Download x3_installer.php, upload into the directory where you want to install X3, and visit {URL}/x3_installer.php from browser.
New X3 Updater
X3.23.0 has also paved way for the new X3 Updater script, which makes it easy, fast and hassle-free to update X3. 
  • Updates your X3 installation directly on web server (super fast!).
  • Avoid having to download zip, unpack zip, and upload zip contents slowly by FTP.
  • Avoid having to worry about what files and folders to upload and overwrite in your X3 directory.
  • Update only takes 10 - 20 seconds.
  • Automatically runs maintenance tasks that may be necessary after updates.
  • X3 Updater is also available from Panel > Tools > Updates, where you can check if you are using latest X3 version.
  • Download x3_updater.php, upload into your X3 directory and visit {URL}/x3_updater.php from browser.
Mass Clean-up
To be able to offer the new installer- and updater scripts, we had to do re-think the core X3 folder structure. We have now made changes so that everything is a bit more logical and future-proof.
  • Root /extensions/ folder moved into /app/extensions *X3 application files.
  • Root /public/ folder moved to /app/public *X3 application files.
  • Root /templates/ folder moved to /app/twig *X3 application files.
  • /app/_cache/ folder moved to /_cache *User files.
  • /app/x3.mailer.php removed and functionality instead moved into /app/x3.api.php.
  • Removed lots of unused junk folders/files.
X3 now contains FIVE root directories:
  • /app * Belongs to X3. Never edit or upload anything in this directory.
  • /panel * Belongs to X3. Never edit or upload anything in this directory.
  • /config * User.
  • /content * User.
  • /_cache * User.
New Custom Files folder 
Another point of the X3.23.0 clean-up, is to separate the X3 application from your content and customizations. X3.23.0 now comes with a new custom files folder, where you can upload CSS, Javascript, images or any other files that you wish to use in your X3 website. This is useful for advanced users who wish to customize their X3 website while keeping custom files separate from the X3 application. You might want to add folders for backgrounds, intro images and video intro's or you might want to create folders with images to be used as gallery "assets" for other pages.
  • Practical to keep any custom images and files inside the /content folder like we have done at
  • Three new folders /css, /images and /javascript or add your own custom folder inside the /custom/files directory.
  • CSS files with "include" in name (f.ex "name.include.css") are automatically loaded into X3.
  • Javascript files with "include" in name (f.ex "name.include.js") are automatically loaded into X3.
  • Images can now be processed by the X3 image resizer if required, since they are accessible from the main /content directory.
  • Use dynamic {{files}} variable in content and plugins to access Url's to files within the /custom/files folder.
X3.23.0 Server Edition
In X3.23.0, we have added official X3 support for servers NGINX and Microsoft IIS, and improved Apache support.  New Apache .htaccess
Brand new X3 Apache server .htaccess file written from scratch for best practice and performance.
  • New default .htaccess file or extended .htaccess for those with additional requirements.
  • Removed a lot of junk as X3 no longer tries to "fix" things on your server that are not critical to X3.
  • Removed all junk examples. If you need to change your .htaccess file, look up examples at html5-boilerplate.
  • Removed unnecessary, outdated and non-X3 related rules.
  • Aggressive cache headers (mod_expires) for faster loading file requests. Especially beneficial for *.json files, used in panel and for dynamic X3 pages, which are now controlled in X3 by versioning. Benefits will inherit upon CDN services like Cloudflare.
  • New directory /app/resources/, where various .htaccess files are stored. These files files are automatically cloned into various directories (/config, /_cache) on demand.
  • New .htaccess file to deny access to directories used for /config and /_cache [see gist].
  • Moved default.htaccess to /app/resources/x3.htaccess.
Massive clean-up to X3 diagnostics, which checks that everything is ok and tries to fix potential problems.
  • Automatically attempts to create missing .htaccess file for various folders.
  • Automatically attempts to add RewriteBase when required.
  • Checks that /config/ folder is blocked for direct read access.
  • Prevent X3 Diagnostics from showing server information with SetEnv X3_HIDE_DIAGNOSTICS On (in .htaccess).
  • X3 release version and date now displays in diagnostics
  • Faster diagnostics loading with fonts lazy-loaded.
  • Diagnostics now checks that you have an "index" folder in content, required for the home page.
  • Checks that index page contains at least one image (new default preview image).
  • Removed warning for open_basedir (when enabled). Open_basedir no longer causes any issues in X3.
  • Checks if PHP memory limit can be assigned dynamically by PHP, often required by the X3 image resizer to resize images when your default memory_limit is insufficient (16MB or lower).
X3 Panel Improvements
  • Many design improvements and functional improvements.
  • Faster performance (interface), especially from file manager and settings.
  • Update your X3 directly from panel Tools > X3 Updates [screen].
  • New useful scroll-to-top button appears bottom right corner of browser when required
  • Settings > Settings section is now moved to Settings > Advanced "Settings > Settings" is not logical, and all settings in this section are "advanced" anyway. Normally you will not change much here, and it should not be the first section to display in settings (especially for new users). Default/first settings section is now Settings > Style.
  • When X3 diagnostics are enabled (as they are by default), a large "alert" is displayed alerting the user to disable diagnostics (if diagnostics reports OK). After disabling diagnostics, the alert will not show again (even if diagnostics are re-enabled from settings -> advanced). It should be made clear for new users and new websites that diagnostics should be disabled before proceeding.
  • Panel now automatically refreshes login-sessions to prevent logout after X minutes of inactivity. Now, you will never get logged out as long as you have the panel open in your browser and as long as you are connected to the internet. If you close the panel window or disconnect from the internet, you may still need to re-login when you resume activity, if session has expired past server session_maxlifetime setting.
  • Panel date-sorting now sorts images by EXIF "DateTimeOriginal" (when photo is taken) if this value is available. This will synchronize sorting between panel and website, when sort by "date" is used [forum].
  • Detects if server firewall is blocking (forbidden) access to save (post) settings to x3_settings.php. Displays a popup window with recommended procedures.
  • Htaccess editor replaced with web.config editor (tools -> web.config) for Microsoft IIS servers, and hidden for other servers.
  • Allow upload of images in webp format from panel (this does not mean X3 supports webp in galleries yet ... that would be unproductive, since only Chrome and Opera support webp, and X3 cannot cross-convert original images from webp to jpg).
  • New clickable page URL now displays below title under page manage (except for hidden folders starting with _underscore).
  • Fixed bug when you have root folder name that starts with "custom..." (for example "customers") [forum].
  • X3 "custom" folder will now always display at the bottom of the menu.
  • New "New Folder" button available below the menu, which makes it easier to create new root-level folders without first having to navigate to root content.
  • Improved and bulletproofed persistence of expand state of left menu when navigating to another section and when reloading page.
  • New dynamic URL is displayed as you type when creating a new folder
  • Added "view page" link to panel topbar, which is always available.
  • Fixed a nasty bug in slideshow "intro mode" settings: After clicking "save" in MAIN settings, "Menu Style" in PAGE settings would revert to "normal". When then saving a page that had "Menu Style" set to "white on 12% black", it would incorrectly revert to "normal".
  • "Base Url" setting removed from panel settings, as I can't see or understand that anyone is using it.
  • Fixed bugs with "FIXED" (sticky) menus, which could attach/detach incorrectly on vertical scroll (when elements are injected into page).
  • Removed Youtube videos embedded directly in HELP, which was making settings and page-settings sluggish because the youtube video loaded as an iframe in an invisible container.
  • Updated photoswipe (popup) to 4.1.2, and now we load Photoswipe CSS from CDN JSDelivr.
  • Added some mechanisms to prevent moving- and copying folders into self and to prevent empty inputs on move/copy/rename.
  • Panel now shares common PHPMailer with X3 frontend.
  • Fixed SMTP emails sent by panel for database version on install and new user reg.
  • Updated JSON.php so it doesn't return deprecated warnings in PHP 7
  • Image resize requests no longer check if image cache folders exist before writing cache file. These folders should always exist, and will be created from diagnostics anyway.
  • DNS Prefetch tags added for Cloudflare CDN and custom files CDN (if applicable).
  • Faster pre-cache page rendering.
  • Page *.json files (when navigating from menu) can now cache in browser (and on CDN), and are version-controlled by X3 (when you make changes in the panel).
New Preview Image logic
We had to re-think the concept of default preview-images for pages, because most of you were deleting the default /index/preview.jpg file, and it's too complicated to have to use settings > page > details > image_default.
  • Removed settings > page > details > image_default because most of you had this, and it's not logical to have to always make sure this setting points to a file that exists.
  • X3 now sets page preview image for a page from the following priorities:
    1. Preview image assigned from page if it exists.
    2. File preview.jpg in page if it exists.
    3. First image in page if page has images.
    4. Child folder preview image *assigned from panel Tools > Previews.
    5. Assets folder *assigned from panel Tools > Previews.
    6. File preview.jpg in index (home) folder if it exists.
    7. First image in index (home) folder if index has images.
    8. If all of the above fails, default preview will be /app/public/images/default.png.
  • Preview image is now fail-proof and will always get an image that exists. No features that utilize preview-images will try to load images that don't exist.
  • Folders module now uses preview image of parent page if the folder itself does not have preview image assigned.
  • improved performance of getting preview images.
  • Updated panel Tools > Previews utility.
  • Diagnostics now gives a "warning" if there are no images inside your "index" page. If nothing else, you should have one image "preview.jpg" there, which acts as default preview image for pages that don't have (or can't find) their own preview.
  • Fixed bug with default preview images not working for pages that do not have assigned a preview image
New Text-Align Logic
Prior to X3.23.0, all text headers in X3 were set to CENTER-align, but this was a poor concept. Headers should not center-align by default, as it is often difficult to read centered headers mixed with left-aligned text. Furthermore, it was too complicated to override so that headers aligned LEFT.
  • New default aligns main title/description CENTER, while inline titles are aligned LEFT.
  • New option in page settings > context to choose text-align [screen][help]. Default can be set from main settings > page > context > text align [screen].
  • New options in page settings > folders and gallery to choose text-align [screen].
  • Removed all text-align classes from module classes setting ... Text-align classes should never be used in modules, but are available to use as classes in custom html content.
  • You can override text alignment in your content by using html classes text-left and text-center.
Other Improvements
  • When someone "cancels" login to a password-protected page, they will now simply see an "unauthorized" icon like this. No need to write any text as it is implicit that they will not see the page content when clicking cancel.
  • Atom /FEED/ is now valid
  • Improved Atom feed output (uses logo if set + only preview image if page has assigned preview).
  • Improved sitemap output.
  • Improved panel/db_check.php.
  • Improved favicon (panel -> custom/favicon/). Now you can add a new favicon PNG with ANY file name to prevent old favicon from getting cached in browser.
  • Carousel-topbar nav arrows are bigger and more clear
  • Hover over caption makes background less transparent, and caption more clear to read. Normal:, hover over caption:
  • Improved and simplified default custom "404" page not found.
  • Mega Menu LIST with partial/improved support for single-level sub-directories ... This is just a "hotfix" for now, as the mega LIST menu is still primarily intended to be used for two-level sub-directories We will implement a proper solution soon.
  • Added {{path}} variable to toolbar items Useful if you want to create a dynamic link that points to files or folders within the current page folder, or link to files in a high-res subfolder.
  • Renamed "CSS Classes" to "Styles and Effects" for folders- and gallery modules, improved help, and added "x3-hover-scale" style in dropdown
  • Added [none] option to CSS/styles selector for context, folders and gallery modules This option is a bit "hacky", but it's the only way to prevent global classes (settings -> page default) from being inherited when you want to remove all styles/classes.
  • Fotomoto is hidden from page settings -> plugins, unless Fotomoto is enabled from main settings > plugins.
  • Prevent caching of X3 application requests that are never supposed to cache in browser or on CDN.
  • No longer can visitor quick-click a menu link that is already active.
  • Hash for cached X3 pages now include the sub-directory where X3 is installed, for example "/x3" or "/" (root). This means you can MOVE an X3 installation from one directory to another, or change the URL, and unique pages will be created based on path relative to domain root. Before, if you moved an X3 website from /x3/ down to / root (or into another directory), it would use the same page-cache, which could create wrong internal links and paths to images, which would only get fixed once you clicked "save" in panel.
  • Fixed so that intro image width/height is correct when custom height is disabled (using image auto-height).
  • Plugins page-intro, background and video-intro will now load files from CDN, if custom CDN is enabled.
  • Added Polish.php to panel languages.
  • Updated to latest PHPMailer
  • Many fixes and improvements to X3 license authorization.
X3 Popup
  • Popup links now work again from image-landing page.
  • Image shared links will now automatically open with image in popup modus as it should have been [example].
  • Updated popup to Photoswipe 4.1.2, and now loads minified (smaller) CSS.
CDN Files
* Only applies if you are using CDN Url in settings > advanced.
  • Images in MENU are now also loaded from the CDN.
  • Preview image for pages will use CDN.
  • Fixed SHARE buttons to use images from CDN (download + pinterest) when using CDN option. {{image_url}} and {{raw_image_url}} variables now point to CDN file.
  • Audio tracks are loaded from CDN.
  • Added Prefetch DNS tag to document <head> for CDN.
Page Navigation
  • Page navigation settings moved from settings > settings to settings > plugins
  • New options for Page navigation "Hide for root level pages" and "Hide for pages with child pages".
  • New default behavior for Page navigation: Controls will display for ALL pages that have sibling pages, except for root-level pages. This can be changed by disabling new option "Hide for root level pages".  We hide page nav by default for root pages because most often pages on root levels are not related to each other (for example galleries <> contact).
Cloudflare Integration
Much-improved Cloudflare integration. *Only applies if you are using Cloudflare.
  • "Cache-control s-maxage=315360000" is added to pages/json for caching on Cloudflare CDN. This will allow pages to cache on Cloudflare CDN when using "Cache Everything" rule alongside the Cloudflare API. No need to use "Edge Cache TTL" page rule.
  • Preload site object (/content/site.json) is now set to cache (from .htaccess), while update-control is managed by X3 javascript (cache-busting). This will allow the site object to cache on Cloudflare CDN when using "Cache Everything" rule.
  • Cloudflare controls also empty sitemap and feed XML.
  • Automatic prevention of caching on Cloudflare for password-protected pages.
  • Simply sign up for Cloudflare and set a page rule "Cache Everything" while X3 handles the logistics!
Disqus Comments
Improvements to Disqus comments plugin [see Disqus example].
  • Disqus comments moved from settings > accounts to settings > plugins
  • New Disqus settings "Add to pages by default" and "Add to image-landing pages".
  • Disqus comments are now enabled per page from page settings > plugins > Disqus Comments
  • Disqus comments help and instructions added.
  • Disqus now works for image landing pages (if enabled in settings).
  • Code and performance improvements.
Image Resizer Cache
Many improvements to the X3 image resizer, which processes images and stores them in your /_cache directory.
  • Removed the process that tries to guess the amount of memory to assign for image resizing. Instead, maximum memory limit 100mb is automatically assigned if possible and if available. An image resize will only take as much memory as it requires anyway. This solves a few bugs [forum].
  • Image resize cache is now portable between domains and sub-directories. You can move an X3 website between domains and sub-directories without affecting the cache hash.
  • Fixed garbage collector. Once in every 200th image request, X3 will start a "garbage collector" job, that deletes cached images that have not been accessed for 1 month. This usually means they are unused orphan cache elements. This process will keep your image cache folders optimized.
  • Image resizer now serves source image if requested dimensions are larger than the original.
  • Slightly faster image processing.
  • To avoid confusion, error requests/images will now never cache in browser or on CDN.
  • Fixed bug where images were not getting cached when requestCache was disabled (IIS servers).
  • Fixed a nasty bug in "slidemenu" layout, where clicking a link could create an error if page was scrolled. Reason was that if "fixed topbar menu" was enabled (inherited from topbar layout options, which does not apply to slidemenu-layout), it would cause X3 to attempt to trigger a function that does not exist.
  • Fixed a bug with fixed position of SIDEBAR layout on browser resize.
  • Fixed a bug in Carousel-layout, where preload-icons could get stuck on "cloned" items when navigating between first/last item (loop)
Posts: 97
Joined: 02 Jan 2008, 17:53

Re: New Release X3.23.0 :deer:

24 Jun 2017, 17:12

Hello Karl;

What about update from  0.21.0 => X3.23.0 ?

Thanks a lot.

User avatar
Posts: 140
Joined: 20 May 2011, 05:38

Re: New Release X3.23.0 :deer:

24 Jun 2017, 17:23

Is equal to beta or is it advisable to re-upgrade?
User avatar
X3 Wizard
Topic Author
Posts: 12963
Joined: 30 Sep 2006, 03:37

Re: New Release X3.23.0 :deer:

24 Jun 2017, 17:23

florent wrote:What about update from  0.21.0 => X3.23.0 ?

Go ahead, use the new X3 Updater script :thumbsup:
User avatar
X3 Wizard
Topic Author
Posts: 12963
Joined: 30 Sep 2006, 03:37

Re: New Release X3.23.0 :deer:

24 Jun 2017, 17:25

masquefotos wrote:Is equal to beta or is it advisable to re-upgrade?
There has been a few minor changes to core scripts, but it's not strictly necessary to update if you were already using an X3.23.0 beta launched earlier.

Then again, the update should be really simple using the x3_updater.php, so why not?
Posts: 82
Joined: 24 Apr 2012, 03:38

Re: New Release X3.23.0 :deer:

25 Jun 2017, 12:49

My Aruba provider fails..."Missing Php Zip Archive, x3 updater requires zip archive to be able to unzip an x3 update"
Posts: 42
Joined: 20 Jun 2012, 17:15

Re: New Release X3.23.0 :deer:

25 Jun 2017, 13:14

Updater worked like a charm :sparkler:
User avatar
X3 Wizard
Topic Author
Posts: 12963
Joined: 30 Sep 2006, 03:37

Re: New Release X3.23.0 :deer:

25 Jun 2017, 13:42

failax wrote:My Aruba provider fails..."Missing Php Zip Archive, x3 updater requires zip archive to be able to unzip an x3 update"
Always problems with Aruba :thinking:Amazing that they don't allow standard PHP ZipArchive on their server. If your server doesn't support ZipArchive, it is impossible for the updater to unpack X3 zip file updates on your server.

You will need to update manually by downloading
User avatar
Posts: 56
Joined: 24 Apr 2012, 07:28

Re: New Release X3.23.0 :deer:

25 Jun 2017, 13:45

As always, nice done Karl!

Great job!
Posts: 5
Joined: 01 Nov 2014, 05:24

Re: New Release X3.23.0 :deer:

26 Jun 2017, 01:25

great thank you 
but i had to update manually too
i got the error from my apache server "For some reason, an error occurred when attempting to unzip X3."
what i have to change on my apache that he let me update?
regards peter from austria
User avatar
X3 Wizard
Topic Author
Posts: 12963
Joined: 30 Sep 2006, 03:37

Re: New Release X3.23.0 :deer:

26 Jun 2017, 04:02

psuppan wrote:i got the error from my apache server "For some reason, an error occurred when attempting to unzip X3."
That's a strange error, because your server would have to report that ZipArchive is ENABLED before X3 would event try to execute the update. I can't imagine what the issue could be ... perhaps it's related to server Firewall. Did the updater unzip any files at all? Or simply failed?

I can take a look, but I will need FTP access.
User avatar
Posts: 41
Joined: 27 Apr 2013, 06:04

Re: New Release X3.23.0 :deer:

26 Jun 2017, 06:17

After updating by new option of PHP:
- ways to photos were gone
- access to the administrator's panel was gone
Last edited by dxodik on 26 Jun 2017, 10:33, edited 1 time in total.
Posts: 86
Joined: 14 Oct 2006, 10:22

Re: New Release X3.23.0 :deer:

26 Jun 2017, 07:18

Great job Karl :thumbsup:
User avatar
X3 Wizard
Topic Author
Posts: 12963
Joined: 30 Sep 2006, 03:37

Re: New Release X3.23.0 :deer:

26 Jun 2017, 09:05

dxodik wrote:Hello!
After updating by new option of PHP:
- ways to photos were gone
- access to the administrator's panel was gone
Your screenshots don't work from here (forbidden).
No link to check?

Sounds to me like you did not visit diagnostics page after the update, or you did not follow warnings. Those errors in the image insinuate that the new /_cache folder does not exist, or is not writable, or the folders inside were not created. There should be a CLEAR critical alert about this if you visit your ?diagnostics page.

If I have a link, I may be able to offer more info. Even better if you provide FTP login.
User avatar
X3 Wizard
Topic Author
Posts: 12963
Joined: 30 Sep 2006, 03:37

Re: New Release X3.23.0 :deer:

26 Jun 2017, 12:21

Some of you with old PHP versions reported errors in the panel after update. This issue has now been fixed.

To fix the issue, just upload and run the x3_updater.php script again please!

Additional info:

The error reported something like this:
Parse error: syntax error, unexpected ')', expecting :: (T_PAAMAYIM_NEKUDOTAYIM) in /htdocs/public/www/panel/filemanager_core.php on line 381
Old PHP doesn't like the following code apparently:
if(!empty(SMTPFrom)) $phpMailer->setFrom(SMTPFrom);
So it has been changed to this:
$from = constant(SMTPFrom);
if(!empty($from)) $phpMailer->setFrom($from);
Sorry for any inconvenience!