Rev 1321 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
Compatibility notes
===================
Requirements regarding compatibility
------------------------------------
- The minimum required PHP version should be PHP 7.0, at least until the last old-stable Linux distro has lost its extended support.
- OIDplus should always be compatible with the latest available PHP version
- OIDplus must be compatible with all modern browsers
- Internet Explorer for public pages should be supported as long as the effort stays low, e.g. just changing a few lines of codes, or including a polyfill.
- Internet Explorer for private pages (RA or admin login) is not so important, since only a small number of visitors will be registered users or admins, therefore there does not need to be a compatibility.
- Search engines must be able to crawl all public content. This is the reason why a page contains static content (loaded in index.php) for the first navigation, instead of fetching everything through ajax.php.
Dependencies
------------
When a new PHP extension is required, then please change the following:
1. README file
2. OIDplus product website
https://oidplus.com/download.php
3. Add checks in includes/oidplus_dependency.inc.php
Notes about the required PHP Version
------------------------------------
Currently, OIDplus supports all PHP versions between 7.0.0 and 8.2.0.
Reasons why we currently require **at least** PHP 7.0:
- Return values (e.g. "function foo(): array") are used in many places
of OIDplus as well as in dependencies ("vendor" folder)
- Some composer packages require PHP >= 7.0.0
- phpseclib/phpseclib's dependency requires PHP>=7
- danielmarschall repositories require PHP>=7, however, they *might*
also work with a lower version of PHP (not tested)
- The compatibility (beside the things mentioned above)
with PHP lower than 7.0 was not tested. There might be more issues.
Currently we DO NOT require 7.1, because some (old-)stable Linux distros are still using PHP 7.0.
Therefore, we commented out following features which would require PHP >=7.1:
- Nullable return values (e.g. "function foo(): ?array")
- void return value (e.g. "function foo(): void")
- private/protected/public consts
- In composer we cannot use the latest version of polyfill-mbstring,
because this would require PHP 7.1
Therefore in composer.json we write:
"symfony/polyfill-mbstring": "<=1.19",
the same thing with phpseclib which also now requires PHP 7.1,
therefore we stay with 3.0 LTS:
"phpseclib/phpseclib": "~3.0"
Once PHP 7.1 is OK, we can go with the latest versions again.
- In dev/vendor_update.sh we patch composer packages pulled from GitHub
to achieve PHP 7.0 compat
Note: How to check the effective PHP version in composer?
composer show --tree