Ошибки TCPDF на PHP 7
Я использую плагин TCPDF для генерации PDF в PHP 7. Тот же код работает нормально в более низкой версии PHP 5, но когда я запускаю этот же код в PHP 7, он выдает следующее сообщение об ошибке.
Обнаружена ошибка PHP. Уровень серьезности: 8192
Сообщение: функция each() устарела. Это сообщение будет подавлено при дальнейших звонках
Имя файла: tcpdf/tcpdf.php
Номер строки: 16542
1 ответ
Редактировать в файле: \FPDI\fpdi.php
Строка 567:
//while (list($k, $v) = each($value[1])) {
в коде:foreach ($value[1] AS $k => $v) {
И отредактируйте в файле: \tcpdf\tcpdf.php
Строка 16543:
//while (list($id, $name) = each($attr_array[1])) {
в коде:foreach($attr_array[1] as $id => $name) {
Примечание для любого, кто найдет это... в последней версии TCPDF это исправлено... поэтому, если вы просто делаете обновление, у вас должно быть все в порядке: https://github.com/tecnickcom/TCPDF
По словам php:
Эта функция УСТАРЕЛА с версии PHP 7.2.0. Полагаться на эту функцию крайне не рекомендуется.
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, где это необходимо: