Parse error in PHP: syntax error, unexpected $end

Parse error in PHP: syntax error, unexpected $end

When programming in PHP, webmaster can encounter an error with a message such as parse error:syntax error, unexpected $end. This error is related to a syntax error in PHP. The most probable cause of the error is a missing or a mismatched parenthesis in the PHP code.

How to fix Parse error?

When you program in PHP, it is likely that you have encountered the following error:

Parse error: syntax error, unexpected $end in Command line code on line 1      

To solve the missing parenthesis error in PHP, the code has to be checked from the beginning to search for it. One way to avoid errors is to use proper indentation in the code. Once all the parentheses in the code have been set correctly, parse error: syntax error, unexpected $end will be fixed.

What is a Parse error?

In PHP a Parse error is an error that occurs during the parsing phase of a PHP's script execution. Parsing is the process of analysing the code to check that it has the correct syntax and can then be translated into executable instructions. If there is a mistake or syntax error in the PHP code that prevents it from being parsed, then PHP will generate a parse error and stop the execution of the script. 

What are some common Parse errors?

Here are several common causes of parsing errors:

  • You forgot to close a quote, so PHP is continuing to analyze your code until it finds the closing quotation mark.
  • You forgot to close a bracket, so from the last opening, PHP considers all the code that follows as part of a block that never ends.
  • You forgot to close a parenthesis, so from the last open parenthesis, PHP considers all the code that follows as part of a specific block (condition, arguments of functions etc) that does not end.
  • You forgot a comma, so for PHP there is an instruction in your code that has no end.

This means that the problem may not be on the line mentioned in the error message, as the missing symbol could be anywhere after that point.

Examples of codes that cause this error. Here are some examples of codes that are causing this error.

<?      
if ($condition){      
     echo "true";      
?>      

Forgot to close a quote:

<? echo "test; ?>

Forgot to close a parenthesis:

<?      
mysql_query("mysite", "logon", "thisisnotasqlserver.com" ;      
?>

Forget a semicolon:

<? if ($test){ echo '1' } ?>

How to fix/avoid this error?

This is often due to a poorly organized presentation of your code. Especially remember to indent your code well, to visually distinguish the different blocks.

Example of a clean code

//Equivalent of array_reverse()      
function inverse_table($table)      
{      
    $ret = array();      
    if (is_array($table) ){      
        for($i=sizeof($table) - 1; $i >= 0; $i++)      
        {      
            $ret[] = $table[$i];      
        }      
    }      
    return $ret;      
}

Example of a non-indented code, harder to debug:

function inverse_table($table)      
{      
$ret = array();      
if (is_array($table) ){      
for($i=sizeof($table) - 1; $i >= 0; $i++)      
{      
$ret[] = $table[$i];      
}      
}      
return $ret;      
}

If you encounter this error, please note that it is not necessarily the end of your code, for example, omitting an accolade may be at the very beginning of your code, even if your file is 1000 lines.

Need more help fixing errors? Check out our forum!
Around the same subject