php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #76417 DOMText doesn't inherit $data and $wholeText properties from DOMCharacterData
Submitted: 2018-06-05 22:46 UTC Modified: 2018-06-07 08:56 UTC
From: pandenitz at mail dot ru Assigned:
Status: Not a bug Package: DOM XML related
PHP Version: 7.1.18 OS: Linux
Private report: No CVE-ID: None
 [2018-06-05 22:46 UTC] pandenitz at mail dot ru
Description:
------------
Linux x64 server (NameCheap hosting)

PHP is compilied with DOM via '--enable-dom=shared':

'./configure' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib64' '--libexecdir=/usr/libexec' '--sharedstatedir=/var/lib' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--build=x86_64-redhat-linux-gnu' '--host=x86_64-redhat-linux-gnu' '--target=x86_64-redhat-linux-gnu' '--program-prefix=' '--prefix=/opt/alt/php71' '--exec-prefix=/opt/alt/php71' '--bindir=/opt/alt/php71/usr/bin' '--sbindir=/opt/alt/php71/usr/sbin' '--sysconfdir=/opt/alt/php71/etc' '--datadir=/opt/alt/php71/usr/share' '--includedir=/opt/alt/php71/usr/include' '--libdir=/opt/alt/php71/usr/lib64' '--libexecdir=/opt/alt/php71/usr/libexec' '--localstatedir=/var' '--with-curl=/opt/alt/curlssl/usr' '--sharedstatedir=/usr/com' '--mandir=/opt/alt/php71/usr/share/man' '--infodir=/opt/alt/php71/usr/share/info' '--cache-file=../config.cache' '--with-libdir=lib64' '--with-config-file-path=/opt/alt/php71/etc' '--with-config-file-scan-dir=/opt/alt/php71/link/conf' '--disable-debug' '--with-pic' '--without-pear' '--with-bz2' '--with-freetype-dir=/usr' '--with-png-dir=/usr' '--with-xpm-dir=/usr' '--with-webp-dir=/usr' '--enable-gd-native-ttf' '--with-t1lib=/opt/alt/t1lib/usr' '--without-gdbm' '--with-gettext' '--with-gmp' '--with-iconv' '--with-jpeg-dir=/usr' '--with-openssl=/opt/alt/openssl' '--with-openssl-dir=/opt/alt/openssl' '--with-pcre-regex=/opt/alt/pcre/usr' '--with-pcre-jit' '--with-zlib' '--with-layout=GNU' '--enable-exif' '--enable-ftp' '--with-kerberos' '--enable-shmop' '--enable-calendar' '--with-libxml-dir=/opt/alt/libxml2/usr' '--enable-xml' '--with-readline' '--with-mhash' '--with-zlib-dir=/usr' '--enable-force-cgi-redirect' '--enable-fastcgi' '--enable-pcntl' '--enable-sysvsem=shared' '--enable-sysvshm=shared' '--enable-sysvmsg=shared' '--enable-sockets=shared' '--with-imap=shared' '--with-imap-ssl=/opt/alt/openssl' '--enable-mbstring=shared' '--enable-mbregex' '--with-gd=shared' '--enable-bcmath=shared' '--enable-dba=shared' '--with-db4=/usr' '--with-xmlrpc=shared' '--with-ldap=shared' '--with-ldap-sasl' '--enable-dom=shared' '--with-pgsql=shared' '--enable-wddx=shared' '--with-snmp=shared,/opt/alt/net-snmp/usr' '--enable-soap=shared' '--with-xsl=shared,/usr' '--enable-xmlreader=shared' '--enable-xmlwriter=shared' '--with-icu-dir=/opt/alt/libicu/usr' '--enable-pdo=shared' '--with-pdo-pgsql=shared,/usr' '--with-pdo-sqlite=shared,/opt/alt/sqlite/usr' '--enable-json=shared' '--enable-zip=shared' '--with-pspell=shared' '--enable-phar=shared' '--enable-posix=shared' '--enable-fileinfo=shared' '--enable-intl=shared' '--enable-sqlite3=shared,/opt/alt/sqlite/usr' '--with-enchant=shared,/usr' '--with-pdo-dblib=shared,/opt/alt/freetds/usr' '--with-interbase=shared,/usr' '--with-pdo-firebird=shared,/usr' '--with-mcrypt=shared,/usr' '--with-tidy=shared,/usr' '--enable-opcache' '--enable-opcache-file' '--with-unixODBC=shared,/usr' '--with-pdo-odbc=shared, unixODBC,/usr' '--with-pdo-oci=shared, instantclient,/usr, 12.1' '--with-libzip=/opt/alt/libzip/usr' 'build_alias=x86_64-redhat-linux-gnu' 'host_alias=x86_64-redhat-linux-gnu' 'target_alias=x86_64-redhat-linux-gnu'


PHP is executed as CGI/FastCGI on Apache

'dom' details from phpinfo():
DOM/XML	enabled
DOM/XML API Version	20031129
libxml Version	2.9.4
HTML Support	enabled
XPath Support	enabled
XPointer Support	enabled
Schema Support	enabled
RelaxNG Support	enabled

Using DOMPDF library which relies on DOMText::$data property, see
http://php.net/manual/en/class.domtext.php

This property is inherited from DOMCharacterData class.

It exists if I use PHP 5.6.36, but it's missed for PHP 7.0.30, 7.1.18 and 7.2.6
DOMText::$wholeText is missed as well.

Tested with opcache enabled/disabled.



Test script:
---------------
$s = new \DOMText('string');
var_dump($s);

Expected result:
----------------
See $data and $wholeText properties like in PHP 5.6.36

Actual result:
--------------
See $data and $wholeText properties

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2018-06-06 01:36 UTC] a at b dot c dot de
Could be configuration-related:

https://3v4l.org/5qeXM

The only difference I'm seeing is that the object had a "nextSibling" attribute added in 7.1.2. In particular, "wholeText" and "data" are both there in all versions.
 [2018-06-06 02:53 UTC] requinix@php.net
-Status: Open +Status: Feedback
 [2018-06-06 02:53 UTC] requinix@php.net
Yeah, everything looks fine on this end. You've tried running that exact script as you've posted it?
What extensions are enabled? Does `php --rc DOMText` output

Class [ <internal:dom> class DOMText extends DOMCharacterData ] {
 [2018-06-06 06:52 UTC] pandenitz at mail dot ru
-Status: Feedback +Status: Open
 [2018-06-06 06:52 UTC] pandenitz at mail dot ru
print_r(class_parents('\DOMText')) output:

Array
(
    [DOMCharacterData] => DOMCharacterData
    [DOMNode] => DOMNode
)

Really strange issue, but it does exist, I continue to explore it.
 [2018-06-06 07:03 UTC] pandenitz at mail dot ru
Also tested via ReflectionClass::getExtension() and ReflectionExtension::isInternal() - yes, it's 'internal' 'dom'.
 [2018-06-06 13:26 UTC] pandenitz at mail dot ru
$ php --rc DOMText
Class [ <internal:dom> class DOMText extends DOMCharacterData ] {

- Constants [0] {
}

- Static properties [0] {
}

- Static methods [0] {
}

- Properties [0] {
}

- Methods [32] {
Method [ <internal:dom> public method splitText ] {
...
 [2018-06-06 19:22 UTC] pandenitz at mail dot ru
Can it be related to outdated libxml2 lib?

These properties are part of DOM level 3
 [2018-06-06 19:43 UTC] pandenitz at mail dot ru
I see the only difference between configure commands, different server PHP versions have different endings of 'configure':


PHP 5.6 (no bugs):

...
build_alias=x86_64-redhat-linux-gnu' 'host_alias=x86_64-redhat-linux-gnu' 'target_alias=x86_64-redhat-linux-gnu' 'CFLAGS=-O2 '-g' '-pipe' '-Wall' '-Wp,-D_FORTIFY_SOURCE=2' '-fexceptions' '-fstack-protector' '--param=ssp-buffer-size=4' '-m64' '-mtune=generic' '-fno-strict-aliasing' '-Wno-pointer-sign'' 'LDFLAGS= '-L/opt/alt/openssl/lib64' '-L/opt/alt/net-snmp/usr/lib64' '-Wl,-rpath=/opt/alt/openssl/lib64,-rpath=/opt/alt/curlssl/usr/lib64,-rpath=/opt/alt/net-snmp/usr/lib64,-rpath=/opt/alt/libssh2/usr/lib64,-rpath=/opt/alt/libxml2/usr/lib64,-rpath=/opt/alt/pcre/usr/lib64,-rpath=/opt/alt/t1lib/usr/lib64,-rpath=/opt/alt/freetds/usr/lib64,-rpath=/opt/alt/sqlite/usr/lib64,-rpath=/opt/alt/libicu/usr/lib64' 


All PHP 7.x (with bugz)
...
build_alias=x86_64-redhat-linux-gnu' 'host_alias=x86_64-redhat-linux-gnu' 'target_alias=x86_64-redhat-linux-gnu' 

Any clues?
 [2018-06-07 08:54 UTC] pandenitz at mail dot ru
I found the reason: DOM extension was loaded for the several times in different php.ini.

Closing.
 [2018-06-07 08:54 UTC] pandenitz at mail dot ru
-Status: Open +Status: Closed
 [2018-06-07 08:54 UTC] pandenitz at mail dot ru
Closed
 [2018-06-07 08:56 UTC] requinix@php.net
-Status: Closed +Status: Not a bug
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Thu Mar 28 12:01:27 2024 UTC