Website maintenance

PHP error "unexpected end of file


Picture of a beautifully tidy garden

With many a WordPress project, you find yourself in the situation of designing your own templates. WordPress templates are typical representatives of the old PHP school, according to which PHP is already its own template engine and thus form a hybrid of HTML and PHP instructions. This is more or less how PHP came into being. In the meantime, PHP and HTML code are separated by additional template engines such as the oldie but goldie Smarty or Twig and Blade (Laravel), which makes sense for larger projects, especially for reasons of reusability, but also clarity of the project. Nevertheless, WordPress does without template engines and leaves the separation of logic and presentation to the developer. The result is, for example, code expressions of the form:

"Unfortunately", however, the short version usually works too, by replacing <?php with <?, thus:

Many Apache web servers will dutifully execute the code at this point. This is because in the PHP.ini the configuration variable "short_open_tag" the value "On"which allows the execution of this syntax. However, it becomes problematic if the PHP version has the value "Off". At this point there will be a fatal error, for example:

"PHP Parse error: syntax error, unexpected end of file in ..."

The problem is that many development environments, such as "MAMP", allow the short notation by default. On the hoster's production server, this can lead to unpleasant surprises - and anyone who often works with WordPress knows that debugging is not necessarily one of the strengths of this CMS.

Developers who use PHPStorm, for example, can tick the option "Short Open Tag Usage" in Inspections > PHP > Code Style and will then receive a corresponding warning during development:

Happy WordPress Coding!

One more hint: Most likely you will not see the error message on the screen, but instead simply a white screen of death will be displayed. However, you will find such a message somewhere in the error logs of your hoster. Pay attention to the PHP files that you have modified or created.


See also