You can check various requirements directly from WordPress.
Log into your WordPress admin, go to Tools → Site Health, and click the Info tab. Scroll down and expand the different sections to find information on PHP memory or version, your WordPress version, and more.
WPML adds language information to URLs. It has been tested with the following permalink structures:
The default
/%year%/%monthnum%/%postname%/
Explanation:
Other permalink structures may work too but can cause problems on different configurations. In all our sites, we are using /%year%/%monthnum%/%postname%/.
For pages, you will get the exact same URLs as with /%postname%/. However, with this permalink structure, there is no way WordPress will confuse between pages and posts, triggering potential problems for language resolution.
WPML uses the TWIG framework for its structure and templates. This means that the eval() function must be enabled for WPML to work properly.
Most popular templating engines, such as Smarty and TWIG, have found that it is faster to write the PHP code to a file. In that way, it can take advantage of the OPcode caching and avoid to require a run-time building of template code.
TWIG runs a lot of checks and sanitation to avoid possible attacks and it is safe to be used with WPML. However, we cannot assure that other developers have made the same checks we did in our Quality Assurance process.
We are still investigating possible solutions which do not require compiling templates on the fly and would make the use of the eval() function unnecessary. However, at the moment, this is the best solution.
Please note that usually, the eval() function cannot be disabled in PHP, but some extensions such as Suhosin can do that. These extensions might be installed and configured by your hosting provider.