PHP 7 上的 TCPDF 错误

TCPDF errors on PHP 7

我正在使用 TCPDF 插件在 PHP 7 中生成 PDF。相同的代码在较低版本中工作正常 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:

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

我记得我每个都有一个 "legacy" 脚本。我没有修改它,而是关闭了折旧错误警告(暂时)。

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 循环替换每个代码:

在文件中编辑:\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