RELEASE-NOTES.txt 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466
  1. ionCube PHP Encoder 6.5 Release Notes
  2. -------------------------------------
  3. *** Please see below for changes relating to the latest 6.5 revision.
  4. Version 6.5 of the ionCube PHP Encoder introduces powerful new security
  5. and usability features. Please note that due to these changes Loaders with
  6. version 3.1 or greater are required.
  7. * Encryption of arbitrary files
  8. The Encoder now has the ability to encrypt any file. This feature may be used,
  9. for example, to encrypt configuration XML files, or HTML templates for use by
  10. Smarty. To specify files to be encrypted the option --encrypt is used in the
  11. same way as --encode is used for encoding PHP files.
  12. To read encrypted files the Loader API has been extended with the function
  13. mixed ioncube_read_file(string path
  14. [,bool &was_encrypted [,string passphrase] ] ] )
  15. This function can read both encrypted and unencrypted files, the second
  16. argument being used to return whether the file was encrypted or not.
  17. Encrypted files can only be read by PHP files encoded with the same Encoder
  18. installation. In other words encrypted files are protected from viewing by
  19. other ionCube PHP Encoder customers.
  20. Encrypted files can also be written by the Loader by using the function
  21. long ioncube_write_file(string path, string content
  22. [,bool encrypt [,string passphrase] ] )
  23. * New obfuscation feature
  24. Compiled PHP bytecode contains certain information such as function names
  25. which are used by PHP's execution engine. To prevent these strings from
  26. appearing in encoded files version 6.5 has a new obfuscation layer. The
  27. new option --obfuscate can take arguments 'functions', 'locals', 'linenos' to
  28. obfuscate the names of functions, local variables, and line numbers
  29. respectively in the compiled bytecode. Options '--obfuscate all' and
  30. '--obfuscate none' can also be used.
  31. While it is desirable to obfuscate an application, it is sometimes necessary
  32. to prevent certain function names from being obfuscated. For example functions
  33. external to the application called by the application should not be
  34. obfuscated.
  35. Similarly application functions called by external scripts should not be
  36. obfuscated. To specify these exceptions a text file should be created with
  37. the name of each function occurring one per line, and the option
  38. '--obfuscation-exclusion-file' should be used to pass the name of the file to
  39. the Encoder. It is not necessary to add the names of built-in PHP functions
  40. to this file.
  41. * Post-encoding step (Windows GUI)
  42. It is now possible to execute a command after the Encoder has finished encoding
  43. a project. This option supports environment variable subtitutions, so
  44. the following command will open the target folder after encoding is complete:
  45. C:\WINDOWS\explorer "{TARGET_DIR}"
  46. * Updated Loaders
  47. In order to execute files created with the new Encoder it is necessary to
  48. install the latest version of the ionCube PHP Loader (at least version 3.1.5).
  49. The latest version of the Loader is always available from:
  50. http://www.ioncube.com/loaders.php
  51. * Upgrade Notes (Linux/FreeBSD)
  52. The following notes apply to those users upgrading an Encoder installation
  53. from a previous version.
  54. After unpacking the archive it may be necessary to generate a new license
  55. request. After the request has been processed new license data can be
  56. downloaded from your account area.
  57. It may be necessary for the user of the Encoder to have write permissions to
  58. the directory containing the Encoder the first time the Encoder is run.
  59. The Encoder will then generate a lock file in that directory. After the first
  60. run of the Encoder the permissions on the folder can be restored to their
  61. previous state.
  62. ionCube PHP Encoder/Loader Changes
  63. ----------------------------------
  64. Version 6.5.13 - 1 August 2007
  65. ------------------------------
  66. * Enhancement to avoid a spurious notice message that could be emitted when
  67. running code on PHP 5.2.1+ of the following form:
  68. foreach ($o->prop as $v) { }
  69. where the value of prop is obtained dynamically via __get().
  70. * Change so that the instanceof operator will evaluate to false for an
  71. undefined class at runtime and not report the class as undefined.
  72. * \r\n sequences in custom preambles are now converted to \n by the Unix
  73. Encoders and not just the Windows Encoder.
  74. * The newline at the end of ASCII encoded files is no longer present.
  75. This keeps a particular forum plugin manager happy that incorrectly
  76. considered a newline at the end of encoded files to be a problem.
  77. * GUI: Double clicking file related messages in the event log tree now opens
  78. the associated file.
  79. * GUI: New option to show Encoder command line.
  80. * GUI (Special Edition): Fix to include any empty folders when creating
  81. tar.gz archives.
  82. * GUI: Change to support URL in the About dialog.
  83. * GUI: Blank lines in custom header comments are now preserved.
  84. * GUI: Minor cosmetic changes.
  85. * License generator: Fix for #d appearing if creating license files on
  86. FreeBSD and exposing the license expiry date.
  87. * License generator: Minor fixes and changes.
  88. Version 6.5.12 - 20 February 2007
  89. ---------------------------------
  90. * Enhancement to allow classes derived from builtin classes (e.g. Exception)
  91. to be declared after their own subclasses.
  92. * New command line option added for declaring custom autoglobals; e.g.
  93. --register-autoglobal _MYAUTO
  94. will process use of $_MYAUTO inside a function as if it were a global.
  95. * GUI: Custom autoglobals feature added to the Miscellaneous project settings
  96. tab.
  97. * Displaying license properties with make_license (--decode-license) or
  98. via the Encoder GUI now displays string properties delimited by quotes and
  99. correctly displays integer properties.
  100. * GUI: Toolbar button added to display license file creation settings and
  101. minor cosmetic changes.
  102. Version 6.5.11 - 3 January 2007
  103. -------------------------------
  104. This release has numerous changes, that include the purely cosmetic, a few
  105. bug fixes, and both some minor and major functional enhancements for usability.
  106. These include:
  107. * GUI: Decoding of server data files via drag/drop now supports recognising
  108. and processing of gzip compressed files.
  109. * GUI: Source files page and project tree enhanced. Convenience buttons added
  110. for changing file/directory rules in addition to the existing right click
  111. popup menu.
  112. Additional visual cues to indicate project file and directory states.
  113. Popup menu options enhanced.
  114. * GUI: Double clicking or selecting "Open" on an item in the source files
  115. tree now displays the usual Windows "Open with" dialog if no program
  116. association is known.
  117. * GUI: "Open with..." dialog added to project tree popup menu.
  118. * GUI: The expand / collapse state of the source files tree in the Project
  119. Settings is now maintained between closing and reopening the Settings
  120. dialog.
  121. * GUI: The Project Wizard has been updated.
  122. * GUI: Double clicking on errors in the popup errors window now opens the
  123. associated source file or displays an "Open with..." dialog.
  124. * GUI: Improvements and corrections to the Windows GUI documentation.
  125. * GUI: Improve handling when bundling Loaders and merging to an existing
  126. target.
  127. * GUI: The default encoding extensions on new projects are now .php, .php4,
  128. .php5 and .inc
  129. * GUI: The default ignore pattern of .* is removed for new projects.
  130. * GUI: Although dot files were processed correctly in previous versions, they
  131. may not always have shown in the source files tree. This anomoly is
  132. corrected.
  133. * PHP 5 Encoder: Support is now added for a couple of PHP 5.1+ specific
  134. features that were not available in the PHP 5.0 language specification.
  135. In keeping with our commitment to support PHP 5.0 and not just 5.1+,
  136. encoded files using 5.1+ specific features can also run on a PHP 5.0 system.
  137. * PHP 5 Encoder: Support added for $this[] when used by ArrayObject instances.
  138. * PHP 4 & 5 Encoder: Non-PHP source files that are already encrypted are now
  139. copied instead of being encrypted again.
  140. * PHP 4 & 5 Encoder: Enhancements to handle cases where the encoding target
  141. exists and is not removed prior to encoding (e.g. if --merge is used), and
  142. where some existing target files or directories are read only.
  143. * PHP 4 & 5 Encoder: Discrepancies between how parse errors are reported with
  144. the PHP 4 and PHP 5 Encoder are fixed.
  145. * PHP 4 & 5 Encoder: Syntax checking now skips files that were ignored with
  146. --ignore.
  147. * PHP 4 & 5 Encoder: Source files explicitly specified on the command line
  148. will now be ignored if they match a --ignore pattern, and not only if the
  149. source item was a directory.
  150. Version 6.5.10 - 15 November 2006
  151. ---------------------------------
  152. * Support for creating wildcard server name restrictions (Pro and Cerberus)
  153. with the Encoder and make_license program.
  154. NOTE: This requires Loader 3.1.23 or above to process the wildcards.
  155. * Enhancements to --help handling on Unix.
  156. * Fix to problem that might cause non-PHP based shell scripts to be encoded.
  157. * Shell scripts already encoded are now copied and not re-encoded.
  158. * Fix for static initialisers with embedded NULL character.
  159. * Other fixes, enhancements and refinements to product and documentation.
  160. Version 6.5.9 - 26 May 2006
  161. ---------------------------
  162. * Fix for PHP 5 compiler when a class or function was declared inside a
  163. case statement.
  164. Version 6.5.8 - 29 March 2006
  165. -----------------------------
  166. * Updated Loaders bundled with Windows download - improved memory usage.
  167. Version 6.5.7 - 15 March 2006
  168. -----------------------------
  169. * GUI occasionally reported certain Encoder project files as corrupt.
  170. * Fixed Windows Encoder issue when the source folder was just a drive
  171. letter (e.g. 'C:\').
  172. * Fixed issue with GUI related to pattern matching excluded/copied files
  173. in the top level of the source folder.
  174. * Fixed issue with GUI which occured occasionally when files were added
  175. into a directory which contained files marked to be ignored.
  176. Version 6.5.6 - 20 February 2006
  177. --------------------------------
  178. * Fix to bundled Loaders.
  179. Version 6.5.5 - 16 February 2006
  180. --------------------------------
  181. * Fix to make_license program if * is passed as argument to the
  182. --select-adapters option.
  183. Version 6.5.4 - 9 February 2006
  184. -------------------------------
  185. * Release with latest Loaders
  186. * Fix to packaging of PHP 5.1 Loader
  187. Version 6.5.3 - 31 January 2006
  188. -------------------------------
  189. * GUI: minor internal change.
  190. Version 6.5.2 - 24 January 2006
  191. -------------------------------
  192. * make_license program: MAC addresses can now be specified in the format
  193. {AA:BB:CC:DD:EE:FF} or {AA-BB-CC-DD-EE-FF}.
  194. * Windows: commandline Encoder gave an error if it was invoked with
  195. a commandline not terminating in '.exe'.
  196. * GUI: if location of project target folder does not exist it will be
  197. created if confirmed by the user.
  198. * GUI: source tree files can now have their state reset by using the
  199. context menu.
  200. * GUI: fix related to Include/Exclude in source tree.
  201. * GUI: fixed resize issue with application dialogs.
  202. Version 6.5.1 - 20 January 2006
  203. -------------------------------
  204. * If a file set to be encoded has already been encoded the Encoder will now
  205. copy the file to the target and display a warning.
  206. * GUI: Added Open to project tree context menu for root folder, files,
  207. multiple selections.
  208. * GUI: New context menu items for project tree folders: 'Set contents to
  209. be encoded', and 'Set contents to be encrypted' (overrule file extension
  210. patterns).
  211. * GUI: Fixed bug where some files were set to be encoded when they did not
  212. match any pattern.
  213. * GUI: Changed 'Apply default patterns' to 'Reset Encoder actions'. When
  214. applied, any files not matching a pattern are now set to be copied.
  215. * GUI: Optimised the settings dialog for 1024x768 resolution displays.
  216. Version 6.5.0 - 16 January 2006
  217. -------------------------------
  218. * File encryption added. Any file can be encrypted by the Encoder and then
  219. read with the Loader API.
  220. * Obfuscation of function names, local variables, and line numbers
  221. in bytecode stream.
  222. * Increased internal security of encoded files and Loader.
  223. * Increased security of licenses generated with the make_license program.
  224. * GUI: Added 8 built-in environment variables TARGET_DIR, SOURCE_DIR, ...
  225. * GUI: Post-encoding step with environment variables substitution
  226. (e.g. C:\WINDOWS\explorer {TARGET_DIR})
  227. * GUI: Double-clicking on a file in the source tree opens file with Explorer.
  228. * GUI: Context menu option added to open a file's source directory in Explorer.
  229. * MAC addresses can now be specified in the format {AA:BB:CC:DD:EE:FF}
  230. or {AA-BB-CC-DD-EE-FF}.
  231. * Loader API: ioncube_loader_iversion() added to retrieve Loader version and
  232. revision as an integer.
  233. * Loader API: ioncube_read_file() added to read an encrypted or unencryupted
  234. file.
  235. * Loader API: ioncube_write_file() added to write an encrypted or unencryupted
  236. file.
  237. * Support for <% %> ASP tags has been deprecated and removed from the
  238. Encoder GUI and documentation. It is still recognised by the Encoder
  239. command line for back compatibility.
  240. * BUG FIX: Shell scripts with whitespace between #! and the PHP executable
  241. path were not handled correctly.
  242. * BUG FIX: Fixed issue with custom prompts (Special Edition GUI).
  243. Version 6.0.18 - 8 December 2005
  244. -------------------------------
  245. * Fixed Encoder license problem when multiple instances of Encoder
  246. were run simultaneously.
  247. Version 6.0.17 - 8 December 2005
  248. -------------------------------
  249. * Fixed issue with licensing of Encoder.
  250. Version 6.0.16 - 27 November 2005
  251. --------------------------------
  252. * Fixed issue with exceptions (PHP 5 Encoder).
  253. Version 6.0.15 - 22 November 2005
  254. --------------------------------
  255. * Try/catch support bug fixed (PHP 5 Encoder).
  256. Version 6.0.14 - 27 October 2005
  257. --------------------------------
  258. * Improved handling of PHP language errors when encoding files.
  259. Version 6.0.13 - 29 September 2005
  260. ----------------------------------
  261. * Fix when recognising that a file is a shellscript PHP file.
  262. Version 6.0.12 - 7 September 2005
  263. ---------------------------------
  264. * Special Edition GUI: blank line now maintained at end of Server Restrictions Grid
  265. on dynamic fields tab.
  266. Version 6.0.11 - 5 September 2005
  267. ---------------------------------
  268. * Fixed bug related to Expire On field on Windows GUI License Settings dialog
  269. * Fixed bug with Windows GUI License Properties - it is no longer necessary to press
  270. return after entering a property value before clicking Generate License.
  271. Version 6.0.10 - 1 September 2005
  272. ---------------------------------
  273. * Minor bugfix with revoke file naming.
  274. Version 6.0.9 - 30 August 2005
  275. ------------------------------
  276. * Display error if an encoded file is specified as the source when
  277. encoding.
  278. * Windows GUI: warning dialog if automatic Loader license validation is
  279. disabled.
  280. Version 6.0 - Version 6.0.8 - 23 August 2005
  281. --------------------------------------------
  282. * Added feature to decode generated licenses.
  283. * Installing IPF evaluation is now optional.
  284. * Resolved time-related problem related to licensing the Encoder on Windows.
  285. * Fixed problem with make_license when --select-server-adapter was used but
  286. the server interface was the loopback.
  287. * Fixed problem with the 'strict language usage' flag on Windows.
  288. * No longer allow an empty license passphrase in the GUI.
  289. * Include 4.4 Loader with Encoder installation.
  290. * Fix when the Linux Encoder was invoked using the PATH environment variable.
  291. Version 6.0 - August 2005
  292. -------------------------
  293. * License files: new 'make_license' program, option for encoded files
  294. to require a license (Pro, Cerberus, bundled with PHP 5 Encoder)
  295. * Error callback file: specify a file and function that gets triggered
  296. if the Loader reports an error.
  297. * --update-target: only process files which have modified time after
  298. the modified time of the target.
  299. * Support for encoding PHP shell scripts.
  300. * Encoder licenses can now be revoked with --revoke-license,
  301. allowing an Encoder installation to be moved to a new machine
  302. * If the Loader causes the script to exit, the exit code is the sum of
  303. 200 plus the ID of the Loader Event (see User Guide)
  304. * Bugfix: transparency of icons in Windows icon extension.
  305. * Windows GUI: Icon extension can recognise PHP shell scripts and
  306. encoded files with no preamble.
  307. * --include-if: extended to prevent encoded files from including
  308. non-encoded files. Now exposed in Windows GUI.
  309. * --disable-auto-prepend-apppend: prevent execution if the php.ini
  310. settings auto_prepend_file or auto_append_file are used.
  311. * Updated dynamic fields interface, added license dynamic fields
  312. (Special Edition Windows GUI only).
  313. * Constants defined in the Loader for Loader Events.
  314. * Loader API enhanced.
  315. * When encoding a single file, the Encoder exits with code 7
  316. if an error occurs instead of 0.
  317. * Bugfix: PHP 5 Encoder bug when overriding properties
  318. in derived classes.
  319. * Bugfix: bug related to --allow-encoding-into-source on Windows.
  320. * Detect whether target file is the same as the source file on Windows.
  321. * Bugfix: Removing .php, .php4, .php3 default patterns from extensions list
  322. with Windows Encoder GUI now works as expected.
  323. * Improved 'parse error' messages with Windows Encoder GUI when used with
  324. the PHP 5 Encoder.
  325. * Files starting with '.' (for example .htaccess) now appear in the GUI source tree
  326. Version 5.0.2 - May 2005
  327. ------------------------
  328. * Bugfix: Exceptions were not handled correctly by the PHP 5 Encoder.
  329. * Bugfix: PHP 4 Encoder crashed if 'parent::myclass' was used
  330. when myclass had no parent class.