The interface is distributed as Blade templates (files with a .blade.php
extension) which have a mix of plain old PHP and a template metalanguage called Blade. These files need to be compiled to plain old PHP before they are used to display the interface.
The compilation of Blade files can use either the PHP Tokenizer extension (very fast, but not always available) or standard PHP string replacement (slower, but always available; if it wasn't available WordPress itself wouldn't work).
The decision on which method to use is based on asking PHP to tell us if both the token_get_all()
PHP function and the T_INLINE_HTML
constant exist. If they both exist, we use PHP Tokenizer. If either or both don't exist we fall back to the slower string replacement.
Since you get the completely uncompiled Blade code it means that both the token_get_all()
PHP function and the T_INLINE_HTML
constant exist, but they do not actually work. Since ether exist, we use the PHP Tokenizer, i.e. a call to the token_get_all()
function, to try and compile the Blade template instead of falling back to string replacement. However, since calling token_get_all()
returns bogus information nothing is actually replaced in the Blade file, therefore it's not compiled, it is simply copied over verbatim.
Frankly, I have never seen the PHP Tokenizer being broken like that before. However, I've seen my fair share of weird bollocks on production sites and commercial hosts.
First, ask your host if the PHP Tokenizer extension is enabled on your site. If it's not, ask them to enable it. It is possible that a third party plugin is doing something stupid, e.g. detecting that token_get_all() is not defined and use their own, broken implementation. That is in line with other stupid things I have seen plugin authors do.
If they tell you that the PHP Tokenizer extension is enabled on your site, please let your host know it's broken.
Just to be on the safe side, I am going to implement a workaround for sites broken in the same way yours is, but this will happen in the next release (scheduled for this week, assuming we finish our tests successfully tomorrow).
Nicholas K. Dionysopoulos
Lead Developer and Director
🇬🇷Greek: native 🇬🇧English: excellent 🇫🇷French: basic • 🕐 My time zone is Europe / Athens
Please keep in mind my timezone and cultural differences when reading my replies. Thank you!