- Ошибка «unexpected end of file» в PHP. В чем причина?
- [Solved]: PHP heredoc syntax error, unexpected end of file
- Example
- Example
- Related Articles
- Синтаксическая ошибка, неожиданный конец файла в PHP-коде
- Добро пожаловать, администратор
- Ответ 1
- Ответ 2
- Ответ 3
- Метод 1 (ваш файл PHP)
- Метод 2 (файл php.ini)
- Синтаксическая ошибка, неожиданный конец файла в PHP-коде
- Добро пожаловать, администратор
- Ответ 1
- Ответ 2
- Ответ 3
- Метод 1 (ваш файл PHP)
- Метод 2 (файл php.ini)
Ошибка «unexpected end of file» в PHP. В чем причина?
У меня работал код, все было отлично. Но вчера бот отказался работать, а ошибку выдает такую:
Parse error: syntax error, unexpected end of file in /var/www/www-root/data/www/botfrombot3.site/app/controllers/madeline.php on line 145
Не могу понять ошибку, ведь раньше он работал стабильно и без нареканий, а тут резко какую-то ошибку выбил.
if (!\defined('MADELINE_ALLOW_COMPOSER') && \class_exists(\Composer\Autoload\ClassLoader::class)) < throw new \Exception('Composer autoloader detected: madeline.php is incompatible with Composer, please require MadelineProto using composer.'); >\define('MADELINE_PHP', __FILE__); class Installer < const RELEASE_TEMPLATE = 'https://phar.madelineproto.xyz/release%s?v=new'; const PHAR_TEMPLATE = 'https://github.com/danog/MadelineProto/releases/latest/download/madeline%s.phar?v=%s'; /** * Phar lock instance. * * @var resource|null */ private static $lock = null; /** * Installer lock instance. * * @var resource|null */ private $lockInstaller = null; /** * PHP version. * * @var string */ private $version; /** * Constructor. */ public function __construct() < if ((PHP_MAJOR_VERSION === 7 && PHP_MINOR_VERSION < 1) || PHP_MAJOR_VERSION < 7) < throw new \Exception('MadelineProto requires at least PHP 7.1 to run'); >if (PHP_INT_SIZE < 8) < throw new \Exception('A 64-bit build of PHP is required to run MadelineProto, PHP 8.0+ recommended.'); >$backtrace = \debug_backtrace(0); if (\count($backtrace) === 1) < if (isset($GLOBALS['argv']) && !empty($GLOBALS['argv'])) < $arguments = \array_slice($GLOBALS['argv'], 1); >elseif (isset($_GET['argv']) && !empty($_GET['argv'])) < $arguments = $_GET['argv']; >else < $arguments = []; >if (\count($arguments) >= 2) < \define(\MADELINE_WORKER_TYPE::class, \array_shift($arguments)); \define(\MADELINE_WORKER_ARGS::class, $arguments); >else < die('MadelineProto loader: you must include this file in another PHP script, see https://docs.madelineproto.xyz for more info.'.PHP_EOL); >\define('MADELINE_REAL_ROOT', \dirname($backtrace[0]["file"])); > $this->version = (string) \min(81, (int) (PHP_MAJOR_VERSION.PHP_MINOR_VERSION)); \define('MADELINE_PHAR_GLOB', \getcwd().DIRECTORY_SEPARATOR."madeline*-version>.phar"); \define('MADELINE_RELEASE_URL', \sprintf(self::RELEASE_TEMPLATE, $this->version)); > /** * Destructor. */ public function __destruct() < if ($this->lockInstaller) < \flock($this->lockInstaller, LOCK_UN); \fclose($this->lockInstaller); $this->lockInstaller = null; > > /** * Extract composer package versions from phar. * * @param string|null $release * @return array */ private static function extractVersions($release) < $phar = "madeline-$release.phar"; $packages = ['danog/madelineproto' =>'old']; if (!\file_exists("phar://$phar/vendor/composer/installed.json")) < return $packages; >$composer = \json_decode(\file_get_contents("phar://$phar/vendor/composer/installed.json"), true) ?: []; if (!isset($composer['packages'])) < return $packages; >foreach ($composer['packages'] as $dep) < $name = $dep['name']; if (\strpos($name, 'phabel/transpiler') === 0) < $name = \explode('/', $name, 3)[2]; >$version = $dep['version_normalized']; if ($name === 'danog/madelineproto' && \substr($version, 0, 2) === '90') < $version = \substr($version, 2); >$packages[$name] = $version; > return $packages; > /** * Report installs to composer. * * @param string $local_release * @param string $remote_release * * @return void */ private static function reportComposer($local_release, $remote_release) < $previous = self::extractVersions($local_release); $current = self::extractVersions($remote_release); $postData = ['downloads' =>[]]; foreach ($current as $name => $version) < if (isset($previous[$name]) && $previous[$name] === $version) < continue; >$postData['downloads'][] = [ 'name' => $name, 'version' => $version ]; > if (\defined('HHVM_VERSION')) < $phpVersion = 'HHVM '.HHVM_VERSION; >else
Средний 4 комментария
[Solved]: PHP heredoc syntax error, unexpected end of file
Heredoc syntax is one of the four ways of defining a string in PHP. It behaves and works like the double-quotes apart from different syntax and is being used mostly for multi-line strings.
The actual string value then follows which can be a single or multiple lines of text.
The same delimiter identifier follows again in a newline immediately followed by a semi-colon (;) to mark the end of the string.
Example
However, you may experience the error below:
PHP Parse error: syntax error, unexpected end of file, expecting variable (T_VARIABLE) or heredoc end (T_END_HEREDOC) or $< (T_DOLLAR_OPEN_CURLY_BRACES) or
PHP Parse error: syntax error, unexpected end of file in /path/to/file/filename.php
or when editing the file in cPanel file editor, the error may be highlighted as below:
Syntax error, unexpected $EOF
The reason why this error occurs is having a space either before or after the closing delimiter identifier. For instance, in our example above, you should ensure that there is no space before or after «ANYTEXT;».
Example
Ensure that there is no space at the places labeled with «[space]» and this should solve it.
Note: The closing delimiter identifier must be alone in a newline followed by a semi-colon (;) and with no whitespace before or after it.
The nowdoc syntax is very similar to the heredoc, only that its delimiter is enclosed in single quotes. In case you experience the unexpected end of file error with the nowdoc syntax, the solution will be the same as that of heredoc.
Related Articles
Синтаксическая ошибка, неожиданный конец файла в PHP-коде
Моя ошибка:
Parse error: syntax error, unexpected end of file in the line
Мой код:
function login()
// код функции логина
>
if (login())
Добро пожаловать, администратор
Загрузка файлов
Редактирование подсчета очков
Else
echo «Недопустимый логин. Попробуйте еще раз»;
>
?>
Некоторый HTML код
В чем проблема?
Ответ 1
Вам следует избегать этого (в конце вашего кода):
или этого:
Не следует ставить скобки непосредственно рядом с php тегом открытия/закрытия и разделять его пробелом:
также избегайте ”
Ответ 2
У меня была такая же ошибка, но я исправил ее, изменив файл php.ini . Откройте его в своем любимом редакторе.
Найдите свойство short_open_tag и примените следующее изменение:
; short_open_tag = Off ; предыдущее значение
short_open_tag = On ; новое значение
Ответ 3
Есть два разных метода обойти ошибки синтаксического анализа.
Метод 1 (ваш файл PHP)
Избегайте в вашем файле PHP этого:
?>
Убедитесь, что вы поставили это так:
Ваш код содержит ” ”
ПРИМЕЧАНИЕ: Отсутствует php после ”
Метод 2 (файл php.ini)
Также есть простой способ решить вашу проблему. Найдите значение свойства short_open_tag (откройте в текстовом редакторе с помощью Ctrl + F !) И примените следующее изменение:
; short_open_tag = Off
Замените на:
short_open_tag = On
Согласно описанию основных директив php.ini, short_open_tag позволяет использовать короткий открытый тег (
Некоторый HTML код
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Синтаксическая ошибка, неожиданный конец файла в PHP-коде
Моя ошибка:
Parse error: syntax error, unexpected end of file in the line
Мой код:
function login()
// код функции логина
>
if (login())
Добро пожаловать, администратор
Загрузка файлов
Редактирование подсчета очков
Else
echo «Недопустимый логин. Попробуйте еще раз»;
>
?>
Некоторый HTML код
В чем проблема?
Ответ 1
Вам следует избегать этого (в конце вашего кода):
или этого:
Не следует ставить скобки непосредственно рядом с php тегом открытия/закрытия и разделять его пробелом:
также избегайте ”
Ответ 2
У меня была такая же ошибка, но я исправил ее, изменив файл php.ini . Откройте его в своем любимом редакторе.
Найдите свойство short_open_tag и примените следующее изменение:
; short_open_tag = Off ; предыдущее значение
short_open_tag = On ; новое значение
Ответ 3
Есть два разных метода обойти ошибки синтаксического анализа.
Метод 1 (ваш файл PHP)
Избегайте в вашем файле PHP этого:
?>
Убедитесь, что вы поставили это так:
Ваш код содержит ” ”
ПРИМЕЧАНИЕ: Отсутствует php после ”
Метод 2 (файл php.ini)
Также есть простой способ решить вашу проблему. Найдите значение свойства short_open_tag (откройте в текстовом редакторе с помощью Ctrl + F !) И примените следующее изменение:
; short_open_tag = Off
Замените на:
short_open_tag = On
Согласно описанию основных директив php.ini, short_open_tag позволяет использовать короткий открытый тег (
Некоторый HTML код
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.