Ошибки TCPDF в PHP 7

Я использую плагин TCPDF для создания PDF-файла в PHP 7. Тот же код отлично работает в более низкой версии PHP 5, но когда я запускаю этот же код в PHP 7, он выдает следующее сообщение об ошибке.

A PHP Error was encountered
Severity: 8192

Message: The each() function is deprecated. This message will be suppressed on further calls

Filename: tcpdf/tcpdf.php

Line Number: 16542
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
1
10 213
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Согласно php:

This function has been DEPRECATED as of PHP 7.2.0. Relying on this function is highly discouraged.

http://php.net/manual/en/function.each.php

Насколько я помню, у меня также есть «устаревший» сценарий для каждого из них. Вместо того, чтобы изменять его, я просто отключил устаревшие предупреждения об ошибках (на данный момент).

index.php

switch (ENVIRONMENT) {
    case 'development':
        error_reporting(~E_DEPRECATED);
        ini_set('display_errors', 1);
        break;
    case 'testing':
    case 'production':
        ini_set('display_errors', 0);
        error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT & ~E_USER_NOTICE & ~E_USER_DEPRECATED);
        break;
    default:
        header('HTTP/1.1 503 Service Unavailable.', TRUE, 503);
        echo 'The application environment is not set correctly.';
        exit(1); // EXIT_ERROR
}

Вы можете обновить библиотеку, поскольку я считаю, что она все еще находится в разработке, или, если это не так, вы также можете изменить код, заменив каждый правильный цикл foreach, где это необходимо:

Как решить эту устаревшую функцию на каждом php

Ответ принят как подходящий

Отредактируйте в файле: \FPDI\fpdi.php строку 567:

//while (list($k, $v) = each($value[1])) {

в коде: foreach ($value[1] AS $k => $v) {

И отредактируйте в File: \tcpdf\tcpdf.php строку 16543:

//while (list($id, $name) = each($attr_array[1])) {

в коде: foreach($attr_array[1] as $id => $name) {

Это трюк! В tcpdf.php есть 3 места с использованием tecnickcom / tcpdf версии 6.2.26

Loren 18.04.2019 01:57

Обратите внимание на всех, кто это обнаружит ... в последней версии TCPDF это исправлено ... поэтому, если вы просто выполните обновление, все будет в порядке: https://github.com/tecnickcom/TCPDF

Другие вопросы по теме