Unless marked otherwise, changes refer to the Encoder products within this release; GUI refers to the GUI supplied with the Windows and MacOS versions.
Resolved an issue in the make_license program where license files created with version 14 were receiving premature expiries. Licences created with earlier versions are unaffected.
Specifying an empty path for the --with-license option now triggers an error.
Support for encoding files with PHP 8.3 syntax
GUI: The encoding language choice is simplified, and is now set as a range. The range specifies the minimum and maximum PHP version to target with the encoded files. The required encodings are derived from this selection, taking into account that some encodings can run on multiple versions of PHP. This replaces the need to select from pre-determined bundle combinations explicitly. The supported PHP versions within the range are also shown.
GUI: A button is added on the project settings source tab to toggle visibility of the side panel, allowing the files tree to expand wider.
GUI: Recent project items can now be removed from the File menu and Recent projects list of the Startup panel with a ctrl-click of the item on the Startup panel.
GUI: A node for syntax check progress is added to the log tree.
GUI: The View Encoder Command Line feature now shows the command for all encodings of a bundle build, not just the first one.
GUI: An Encoder Options item is added to the project settings miscellaenous (Misc) tab. This allows additional command line options to be specified that will be added to encoding commands when run.
GUI: Banner items can be closed by clicking an X symbol if one is shown.
GUI: A closed banner can be reopened with a Show Banner menu option on the View menu.
GUI: The initial purple "ready" indicator state of previous versions is removed. If no project is automatically opened at startup, the indicator will be grey. If a project is opened it will be green. After a build, the indicator will be flashing red or green, dependent on whether there were any errors. Clicking the indicator will reset it to solid green if desired.
GUI: The Encode menu is renamed as Build.
Fix for a crash that could occur when applying class obfuscation.
Fix for "Unexpected AST kind (513)" errors occurring due to enum value properties occurring in constant expressions.
Fix for obfuscation of classes producing an "interface not being found" error for enums at runtime.
Fix for obfuscation of classes producing a segmentation fault with enums.
Fix for an issue with the non-Windows Encoders if using the --allow-encoding-into-source option and attempting to encode a project with the target directory inside the source directory. Although this scenario should be permitted, encoding would be prevented for safety reasons with an incorrect error message given. This is resolved with this release.
Support added for encoding files using PHP 8.2 syntax.
GUI: Feature added for using existing projects as a template for new projects.
GUI: Enhancement to Encoder version selection in the Project Wizard, QuickStart, and Misc panels. While previously a specific Encoder version could be selected, projects also can now be configured to automatically align with the current GUI version. Projects saved in version 12 or earlier and set to use the latest Encoder will default to the latest Encoder available in version 13 or subsequent versions.
GUI: The default for Encoder version selection in new projects as set within Preferences has also been refined. Just as in project settings, there is now the capability to set Encoder version to automatically match the current GUI version. The preference will update to this setting when version 13 is started for the first time, and the setting can be adjusted in Preferences to fix the default Encoder version if desired.
GUI: Keys tab renamed as Relection & Keys, and revised for clarity.
GUI: Show project path in status line while hovering over recent items in the startup panel.
GUI: Improved help access and handling of F1 on Windows. Help button added to the project settings dialog to show related help.
GUI: New feature for easier setting of lengthy text in the project settings "Custom 'No Loader' expression" field.
GUI: Font for the project settings custom header text field changed to a monospaced font.
GUI: Minor fix with exporting some project settings in command line Encoder project file format.
Encoder: Fix for issue encoding some PHP 8.1 code on 32 bit architectures.
GUI: New language option for bundling PHP 7.4 and 8.1 encoded files together as a single file.
GUI: Bundling performance boosted by using the --only-include-encoded-files Encoder option to only process files to be encoded, eliminating duplicate processing of other files when adding to a bundle.
GUI: Items added to the Project menu to open a terminal command line window on the source, target and project settings locations. The terminal program can be selected in a new Applications > Terminal section within preferences. The program to be run by the GUI is also shown in the status line when highlighting these menu items. EXPERIMENTAL: This feature is experimental and may change in future releases.
GUI: Close Section item added to the Log Tree right-click context menu that closes the corresponding section of the log tree.
GUI: Excluded Directories node added to the Log Tree.
GUI: F5 accelerator added to trigger the default build action (same action as using the play (build) button).
GUI: Help menu item added for submitting a feature request.
GUI: Help menu item added to review release notes.
GUI: Miscellaneous minor adjustments.
GUI: Various GUI user guide updates, and describe some previously unmentioned features.
The --without-runtime-loader-support Encoder option is now deprecated. It is still recognised but undocumented, and is now the default. This change means that PHP code at the start of encoded files that would attempt to install the Loader using the dl() PHP function will no longer be present. dl() has been disabled by default in most PHP configurations since PHP 5.3.0, so the code would be ineffective and unnecessary bloat, which this change eliminates.
A new option --with-runtime-loader-support is added for back compatibility, and includes the PHP runtime install code mentioned above in the header of encoded files. Note that runtime Loader install requires dl() to be enabled, and this is unlikely to be the case in general. The usual way to install the Loader is via the php.ini file.
Support is added for encoding files using PHP 8.1 syntax.
Minor Loader change - From PHP 8, ioncube_loader_iversion() now returns an integer type rather than an integer as a string. e.g. 120000 rather than "120000" for Loader version 12.0.0
GUI - the option to enable short open tags in the UI is unavailable if encoding as PHP 8 and will be removed in a future version.
Updated default text if no Loader is installed.
Deprecated features
The --no-short-open-tags option will be removed in a future version as short open tags are removed as a concept in PHP 8.
Removal of legacy features
The options --allow-untrusted-extensions and --disallow-untrusted-extensions have been undocumented and had no effect from version 8, but have still been recognised for back compatibility. These have now been removed.
This minor release provides GUI and cosmetic documentation changes only.
Refine the toolbar on MacOS.
Resolve scaling issue with vertical toolbar orientation on MacOS.
Fix for FTP hostname showing as unset in project settings (special edition GUI).
Fix for custom FTP port not taking effect (special edition GUI).
Improve news content fetching.
Support is added for encoding files using PHP 7.4 syntax
Added --skip to fully ignore project files or directories. Unlike --ignore, which ignores items but will still traverse directories so any matching --keep rules can be applied, --skip will fully ignore items. This may reduce encoding times and is recommended over using --ignore.
License creator program (make_license)
Added --decode-format to specify the output format when decoding license files. Output can be in the legacy format or various json formats.
Added --compat to enable selected compatibility with previous versions. Currently this may be used with the value "no-bool-props" to request legacy behaviour for parsing of boolean property values.
GUI - New features, enhancements and bug fixes, including:
Support for high and per-dpi screens.
Native MacOS Dark Mode support.
Populate license fields in create license dialog from an existing license file by drag/drop.
New JSON formats when decoding license files.
The size of project and directory history has been increased.
Fix for empty license property values
PLEASE NOTE as mentioned above that the license file creator that comes with the Pro and Cerberus editions now stores boolean properties as booleans rather than strings, e.g. --add-property foo=true This behaviour is as would be expected, but differs from that of previous releases. The old behaviour can be obtained by expressing the value as a string or with a new compatibility option.
GUI preference added to better support HiDPI displays on Windows.
Fix for script-level dynamic keys not being recognised by the 7.1 and 7.2 encoders.
Fix for a memory leak that could occur when using obfuscation with the 7.1 and 7.2 encoders.
Correction to help text for "file:" type external keys.
New Encoder for PHP 7.2 language features.
Added --bundle and --add-to-bundle options that allow multiple encodings to be bundled into one file with short forms -B and -A, respectively.
Added a --keep-comments option that means header comments will be prefixed to an extra encoding appended to a bundle.
Fix for a crash that could occur when the Encoder was attempting to acquire a licence for itself and permissions on the licensing directory meant that files could not be created.
Fix for an issue in the 7.1 Encoder whereby private methods were not called if there was an overriding method in a sub-class. Specifically, there was a call to the private method from a parent method and that parent method had itself been called from the child class.
The PHP Encoder for PHP 7.1 language features is included.
GUI: Updates to the GUI for support of PHP 7.1
GUI: Removed option to disable Dynamic Decoding. Projects previously encoded with dynamic decoding disabled will still work as normal
Commands --acquire-license and --release-license have been changed to --activate and --deactivate, although --acquire-license and --release-license can still be used.
GUI: Changes to some labels to follow the update from aquiring to activating a license.
The command line Encoder defaults to encoding for PHP 5.6+ if no language option is specified.
Updated examples, showing more of the protection features of the Encoder.
Fix for problem with the DIR constant whereby it would not be processed correctly if part of one of PHP 5.6's constant expressions.
Fix for problem with the FILE constant whereby it would be replaced with the path to the source file rather than the encoded file.
Fix for closures not being found if they are used in a namespace and obfuscation of functions is used.
GUI: Minor fixes.
GUI: New status bar indicator to warn if Encoder version selection is lower than it could be.
Documentation updates.
GUI: Avoid generating command line option --keep for folders in cases where this is implied by the use of other options.
GUI: Fix for emitting unnecessary --copy/--encrypt options for folders that had first been set to non-default processing rules and then excluded from the project.
OSX GUI: Rearrange controls to reduce the height of the project settings dialog to fit on an 11" Mac book air screen.
OSX GUI: Fix for not opening a project file when double clicked unless the application is already running.
Fix for PHP 5.6 magic method __debugInfo not being excluded from obfuscation.
Fix for an issue where a function call in a switch may result in the incorrect branch being executed.
Fix for the 64-bit Linux encoders where it does not encode ints longer than the 32-bit MAX_INT correctly.
Fix for memory leak when writing the encoded files.
Language support: Encoder added to encode scripts using PHP 5.6 language syntax, plus Encoders for earlier versions of the PHP grammar.
Code security: Support for external protection keys, just-in-time (JIT) decoding of protected code, and an innovative new code protection mechanism using dynamic run-time generated encryption keys.
Encoder naming changes:
The PHP 4 Encoder is renamed from ioncube_encoder to ioncube_encoder4.
For Linux and FreeBSD
All Encoders are now located in a bin directory.
Fix for issue where parse errors may be garbled with the PHP 5.5 encoder.
Product licensing enhancements.
Windows - Product licensing via command line with --acquire-license is now supported.
Added --create-target option to create the target directory path if it does not exist.
Added --ignore-interface-aliases option for file and license based restrictions; available with command line encoding only. Supported with Loader 4.6.2 and higher.
GUI: In the dialog displayed on startup if opening the last active project file fails, it is now possible to tell the GUI to forget the project file via the dialog as well as via the File menu.
GUI: Improvements to interface behaviour when using drag/drop of server data files on the create license dialog.
GUI: Feature added to allow browsing for a server data file as well as drag drop when creating license files.
GUI: New toolbar icons for the OS X GUI.
GUI: Many minor GUI adjustments.
Fix for issue where a loop with a trivial condition could cause an infinite loop in the encoder.
Fix for issue where obfuscation of functions could lead to a function not being found in the global namespace even if it had been added to an obfuscation exclusion file.
Fix for incorrect handling when the path to the encoding target does not fully exist. In this case an error will now be produced or the target path will be created if using the new --create-target option.
GUI: Fix for possibility of a false report about incorrect installation when launching the GUI on Windows if other versions of the software are still installed.
GUI: Minor GUI painting fixes and improvements.
The PHP Encoder for PHP 5.5 language features is included.
GUI: Initial release of the OSX GUI.
GUI: Added Project Wizard. This can automatically setup a project using a few basic settings.
GUI: A "Quickstart" tab has been added to project settings. This consolidates the essential settings onto one tab, allowing these to be easily changed in one place. Settings that have been added to this tab are still present on their original tabs.
GUI: An "Actions" tab has been added to the project settings. The "Post-encoding command" from the "Miscellaneous" tab has been moved here, and now additional pre/post encoding/packaging steps can be specified.
GUI: Encoding using legacy or obsolete Encoders is now determined on a per-project basis instead of a program-wide property. As a result, the Encoder version can now be selected on the "Miscellaneous" project settings tab. A restart is no longer required to switch Encoder versions.
GUI: Encoding and licensing options have been moved out of the "Project" menu and into new "Encode" and "Licensing" menus respectively. Projects can now be built using any present Encoder through a new "Build With..." menu.
GUI: The "Encoders" tab in the general preferences window has been merged into the "Project Defaults" tab. Information about the required Loaders for each Encoder version can be found by hovering over the respective option.
GUI: Fix for frozen window if quitting a modified project is cancelled.
Fix for garbled output with the Unix Encoders if the licensing lock file cannot be accessed.
Optional compiled code class and method name obfuscation added to the PHP 5, 5.3 and 5.4 Encoders.
The obfuscation exclusion list has an enhanced syntax with separate sections to specify the names of functions, classes and methods that are to be excluded from obfuscation.
GUI: Added new startup panel. The startup panel displays the latest news and updates related to the Encoder or Loaders, as well as displaying tutorials related to using the Encoder when they become available.
GUI: Added new security checklist functionality. The strength of project encoding options is now clearly visible by looking at a new coloured gauge in the status bar, and a checklist can be accessed via the "Project" menu or by clicking the security gauge.
GUI: Added functionality to check support status from the program. A new indicator on the status bar indicates the current support status. More detailed information can be accessed via the "About" menu, or by clicking on the correspondnig status bar indicator. Support can be automatically checked on start up.
GUI: Added functionality to automatically check for new Encoders and Loaders on startup. An alert is given when new versions of either are available for download.
GUI: Added tool bar option to close the current open project.
GUI: Added functionality to generate random include and obfuscation keys.
GUI: Significantly decreased the time that may be required for the program to start.
GUI: Minor bug fixes.
Minor functionality changes to accommodate new GUI changes.
Windows: Fix for issue where network adapters may not be detected.
The PHP Encoder for PHP 5.4 language features is included.
Options for automated license acquisition and release via the Internet for Linux, FreeBSD and OS X versions have been added.
A feature to query for availability of new versions has been added.
Option to allow scripts with file based domain restrictions to have domain name checks skipped when run via PHP CLI for consistency with the behaviour of license based restrictions.
Running the OS X Encoder with a relative PATH is now supported.
The obsolete version 6.5 Encoder is included in addition to the legacy version 7 Encoder for cases where encoding to work with old or very old Loaders is required.
GUI: Updates, minor fixes and support for PHP 5.4
Encoded files produced by Encoder 8.0 require a minimum of Loader version 4.4.0 to function.
License acquisition and release is now possible over the Internet with the Linux, FreeBSD and OS X Encoders.
Use --acquire-license and --release-license for automated processing.
The manual license request and revoke file generation options from earlier versions are deprecated and have been renamed in the Linux, FreeBSD and OS X editions.
==============================================================================
GUI: Default directory for locating product license files is now the documents folder.
Cosmetic documentation updates.
GUI: Support for online licensing of the Encoder product during installation and from within the GUI.
Correction to output of --help from the make_license program.
GUI: The title bar now indicates if application restart is required (after switching between legacy mode), and indicates if legacy encoding mode is in operation.
GUI: Button added to browse for a custom error callback file within the project source tree.
GUI: Alert to a license file incorrectly located within the install folder rather than the licensing folder.
GUI: Version check option added to Help menu to check for any available software update.
GUI: Fix to faulty command line generation when the custom header comments text field contained a blank line.
Fix for incorrect behaviour of --verify in the presence of user-defined classes (PHP 5.3 Encoder).
Fix for issue that could affect temporary variables in files encoded with the PHP 5.3 Encoder for certain mixed combinations of Encoder and Loader platforms (PHP 5.3 Encoder).
GUI: New feature added to support legacy encoding (6.5) as a user preference. This brand new feature is a compatibility maximiser, giving access to new features of the version 7 GUI while allowing generation of legacy encoded files. Using the version 7 Encoder is recommended and is the default, but simply switch to legacy encoding using version 6.5 Encoders via the preferences dialog if needing to use encoded files to servers running old Loaders (pre version 4). Note that as this feature uses version 6.5 Encoders, new features of the version 7 Encoder (such as the @ syntax) are not available when legacy encoding is selected.
The Encoder for the PHP 5.3 language is included in this release, plus the Encoders for PHP 5 < 5.3 and PHP 4.
Source directory substitution in wildcard patterns using @
A leading @/ or @\ in the values for --keep, --ignore, --encode, --copy and --encrypt is interpreted as being to the first source item specified.
Option --ignore-deprecated-warnings added to ignore deprecated warnings.
Option --ignore-strict-warnings added to ignore strict language usage warnings.
GUI: (File menu) The recent files and directories history now indicates if an item is missing, and gives an option to remove that item from the history.
GUI: Accessibility enhancements.
GUI: (Project menu) New options added to quick-build and clean the current project. The build option will process as per the project settings with respect to whether an existing target is replaced, updated or merged. Quick-build will perform an update operation and only process files that are new or modified more recently than the corresponding item in the target folder. Note that a quick-build will not remove items in the target folder that do not appear in the source folder, so a clean or full build is recommended after changing the structure of the source folder.
GUI: Preferences dialog added for project defaults and other settings.
GUI: New toolbar icons added for moving to the next/previous parse error within the associated file. When used, the document containing the error is opened, and if supported by the editor set via the preferences dialog, the cursor will be positioned at the line containing the error.
GUI (user preference): The last open project can be automatically opened at startup.
GUI: The PHP language used (4, 5, 5.3) is added as a visual check to the title bar information.
GUI: Various bug fixes.
GUI: Event log entries optimised to show shorter paths, and date/time display is available as a user preference.
GUI: Source file edit/view. Source files can now be opened in a choice of editors both from the source files tree in project settings and in the relevant nodes of the event tree. The preferred editor is selected as a user preference from a list that currently includes: EditPlus 3, Notepad++, GVim, PSPad, Programmer's Notepad, PHP Edit or PHP Designer 2007. This list can be extended if required by editing an XML document located in the installation folder, using the existing entries as examples.
If an editor supports opening of a file at a particular position, double clicking a parse error message in the event log will open the source file with the cursor positioned at the line containing the error.
Encoded files produced by Encoder 7.0 require a minimum of Loader version 4.0 to function.
Encoding with strict language rules is now the default, and does not need to be enabled with --strict-php. Deprecated warnings (new from PHP 5.3) are also enabled by default.
New options --ignore-strict-warnings and --ignore-deprecated-warnings can be used to suppress strict and deprecated warnings.
PHP 5 Encoder: Code with var instead of public/private/protected will no longer give a strict warning if strict warnings are enabled.
GUI: New projects have strict language usage and deprecated warnings enabled by default in the project settings (miscellaneous tab).
GUI: Menu and toolbar "Encode" options renamed as "Build" options.
GUI: The "New Project" Wizard is removed for 7.0.0 and a new version will be added in a future revision.
Copyright (c) 2002-2024 ionCube Ltd.