PHP语法错误求助:Parse error: unexpected end of file 排查
解决PHP「Parse error: syntax error, unexpected end of file」错误
问题原因
你的错误源于代码中使用了短标签<?,若PHP配置里的short_open_tag未开启,PHP会无法识别<? if ($user_data['role'] === 'admin') : ?>这行的条件逻辑,导致后续的endif;找不到对应的起始标记,解析到文件末尾时就抛出了"unexpected end of file"错误。
修复步骤
将短标签替换为完整的PHP标签即可解决问题:
把这一行:
<? if ($user_data['role'] === 'admin') : ?>
修改为:
<?php if ($user_data['role'] === 'admin') : ?>
修改后的完整代码:
<?php //require_once 'имя_файла.php'; подключение файла к другому $animals = require_once $_SERVER['DOCUMENT_ROOT'] . '/data/animals-data.php'; // благодаря return в файле массив оказывается в переменной $user_data = require_once $_SERVER['DOCUMENT_ROOT'] . '/data/user-data.php'; // $_SERVER суперглобальный массив который хранит информацию о сервере // DOCUMENT_ROOT - корневая директория сервера ?> <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Зверинец</title> </head> <body> <section> <h2>Все животные</h2> <?php foreach ($animals as $animal) : ?> <div> <h3><?= $animal['name'] ?></h3> <div> <img height="300" src="/img/<?= $animal['img'] ?>"> </div> <?php if ($user_data['role'] === 'admin') : ?> <button>Перейти к редактированию</button> <?php endif; ?> </div> <?php endforeach; ?> </section> </body> </html>
补充说明
<?=属于短输出标签,在PHP 5.4及以上版本中默认启用,即便short_open_tag关闭也能正常工作,因此可以保留使用。- 若你坚持使用短标签
<?,可在php.ini中设置short_open_tag = On,但从代码兼容性和可移植性角度,建议始终使用完整的<?php标签。
内容的提问来源于stack exchange,提问作者Vladimir
相关产品推荐
相关产品推荐

