0

我们在 Lighttpd 1.4.26 下使用 PHP 5.3.2 和 FastCGI:

$ /usr/lib/cgi-bin/php5 -v
PHP 5.3.2-1ubuntu4.20 with Suhosin-Patch (cgi-fcgi) (built: Jul 15 2013 17:10:44)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
    with XCache v1.3.0, Copyright (c) 2005-2009, by mOo

我有一个 php 脚本,它会为 Lighttpd Web 服务器错误日志生成通知:

2013-08-30 14:11:46: (mod_fastcgi.c.2711) FastCGI-stderr: PHP Notice:  
Use of undefined constant ENT_XML1 - assumed 'ENT_XML1' in 
/var/www/request.php on line 719

该行的脚本正在调用 htmlentities():

htmlentities($xml, ENT_QUOTES | ENT_XML1, 'UTF-8')

htmlentities()的文档说常量 ENT_XML1 是在 5.4.0 版上添加的,所以我想知道 5.3.2 版如何知道“假定 ENT_XML1”作为其默认值?5.3.2 版本可能添加了这个吗?它并没有在PHP5 ChangeLog中对我产生影响。

注意:该脚本似乎正在转换 $xml 字符串中的 html 实体。

4

1 回答 1

1

您得到的错误实际上意味着 php 不将 ENT_XML1 识别为常量,因此将其转换为字符串 'ENT_XML1'。htmlentities 没有做你想做的事情,因为你没有向它传递正确的标志常量

htmlentities(ENT_QUOTES | 'ENT_XML1')

不一样

htmlentities(ENT_QUOTES | ENT_XML1)

于 2013-10-15T21:24:06.497 回答