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
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: pandenitz at mail dot ru
New email:
PHP Version: OS:

 

 [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

Pull Requests

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-2025 The PHP Group
All rights reserved.
Last updated: Wed Feb 05 20:01:30 2025 UTC