0

Lighttpd 1.4.26 で FastCGI を使用して PHP バージョン 5.3.2 を使用しています。

$ /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

Lighttpd Web サーバーのエラー ログに通知を生成する php スクリプトがあります。

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 に答える