0

维护一个使用 ISO-8859-15 的遗留 PHP 项目。当我收到任何类型的 PHP 错误时,只要它包含单个非 ASCII 字符(很可能是因为现代 PHP 到处都假定 UTF-8),则根本不会显示错误消息。这发生在大多数自定义异常中,因为错误消息是西班牙语:

致命错误? 哪一个?

是否有控制这个的 PHP 指令?


到目前为止,我正在禁用 HTML 错误作为解决方法。我不需要任何类型的转换,因为所有内容都已正确配置为使用 ISO-8859-15(文件、数据库、HTTP 标头...)。我想说这是在 PHP/5.6 中整理出来的,但我仍然是 5.5。

4

1 回答 1

0

与我最初的看法相反,内置错误处理程序在编写 HTML 错误消息时似乎没有使用 PHP/5.6.0 中引入的default_charset指令input_encoding,它也没有使用或output_encoding. 所以我们基本上只剩下两种选择:

  1. 使用一组自定义错误处理程序自定义异常处理程序(如果您不想最终得到比原来更糟糕的东西,这绝非易事)。

  2. 禁用 HTML 错误:

    if( version_compare(PHP_VERSION, '5.4.0', '>=') ){
        ini_set('html_errors', false);
    }
    
于 2016-12-02T09:15:32.950 回答