I encountered Parse error: syntax error, unexpected T_ENDWHILE in www.bKjia.c0m .php file while writing a simple program. Let me analyze the reasons and solutions for you.
Problem:
1. The same code runs normally on some machines, but an error occurs when running on a specific machine.
2. Some pages of the same site display normally (such as ), but when opening some pages, the phpxx_errors.log or page displays the error message "Parse error: syntax error, unexpected T_ENDWHILE in xx.php on line xx”.
Error reason:
This error may be caused by missing a curly brace ("}") when writing the PHP script, but the more common reason is that the short_open_tag value in the php.ini file is Off.
Determines whether the abbreviated form of the PHP code start flag ( ?>) is allowed. If you are using PHP with XML, you can disable this option to facilitate embedded use of . Otherwise, you can also output it through PHP, for example: . If disabled, the full form of the PHP code start flag () must be used.
Note: This directive also affects the abbreviated form =, which is equivalent to echo. Using this abbreviation requires setting short_open_tag to On. It is not recommended to use short tags. The standard method is to use . However, because this short tag has been used for a long time (historical reasons), this feature has been preserved for compatibility with old codes.
Solution:
Set the short_open_tag value in the php.ini file to On.
Related knowledge: PHP short tag short_open_tag
名字 | 默认 | 可修改范围 | 更新日志 |
---|---|---|---|
short_open_tag | "1" | PHP_INI_ALL | 在 PHP 4.0.0 时是 PHP_INI_ALL。 在 PHP < 5.3.0 时是 PHP_INI_PERDIR。 |
asp_tags | "0" | PHP_INI_PERDIR | 在 PHP 4.0.0 时是 PHP_INI_ALL。 |
precision | "14" | PHP_INI_ALL | |
serialize_precision | "17" | PHP_INI_ALL | 从 PHP 4.3.2 起可用。在 PHP 5.3.5以前,默认值为 100 |
y2k_compliance | "1" | PHP_INI_ALL | 在 PHP 5.4.0 中移除该选项。 |
allow_call_time_pass_reference | "1" | PHP_INI_PERDIR | 在 PHP 4.0.0 时是 PHP_INI_ALL。 在 PHP 5.4.0 中移除该选项。 |
disable_functions | "" | php.ini only | 从 PHP 4.0.1 起可用。 |
disable_classes | "" | php.ini only | 从 PHP 4.3.2 起可用。 |
exit_on_timeout | "" | PHP_INI_ALL | 从 PHP 5.3.0 起可用。 |
expose_php | "1" | php.ini only | |
zend.multibyte | "0" | PHP_INI_ALL | 从 PHP 5.4.0 起可用 |
zend.script_encoding | NULL | PHP_INI_ALL | 从 PHP 5.4.0 起可用 |
zend.signal_check | "0" | PHP_INI_SYSTEM | 从 PHP 5.4.0 起可用 |
zend.ze1_compatibility_mode | "0" | PHP_INI_ALL | 从 PHP 5.0.0起可用。 在 PHP 5.3.0 中移除该选项 |
detect_unicode | "1" | PHP_INI_ALL | 从 PHP 5.1.0起可用。 本过时特性将肯定会在未来被移除。 |