2013-08-30 3 views
0

Мы используем PHP версии 5.3.2 с FastCGI под Lighttpd 1.4.26:PHP 5.3.2 и htmlentities флаг ENT_XML1

$ /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 журнал ошибок сервера:

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.

Примечание: сценарий, похоже, преобразует html-объекты в строку $ xml.

ответ

1

Ошибка, которую вы получаете, фактически означает, что php не распознает ENT_XML1 как константу и поэтому преобразовывает его в строку «ENT_XML1». htmlentities не делать то, что вы хотите, чтобы это сделать, потому что вы не передавая ему соответствующие флаги констант

htmlentities(ENT_QUOTES | 'ENT_XML1')

не то же самое, как

htmlentities(ENT_QUOTES | ENT_XML1)

+0

Благодарность за объяснение! – Alan

Смежные вопросы