Scott Wang
Scott Wang

Reputation: 498

PHP Warning: PHP Startup: Unable to load dynamic library

When I run this command php -v
this error comes up:

PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/20160303/dom.so' - /usr/lib/php/20160303/dom.so: undefined symbol: php_libxml_node_free_list in Unknown on line 0

PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/20160303/xmlreader.so' - /usr/lib/php/20160303/xmlreader.so: undefined symbol: dom_node_class_entry in Unknown on line 0

PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/20160303/xsl.so' - /usr/lib/php/20160303/xsl.so: undefined symbol: dom_node_class_entry in Unknown on line 0
PHP 7.1.5-1+deb.sury.org~trusty+2 (cli) (built: May 22 2017 13:39:01) ( NTS )

Copyright (c) 1997-2017 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies with Zend OPcache v7.1.7-1+ubuntu14.04.1+deb.sury.org+1, Copyright (c) 1999-2017, by Zend Technologies

Upvotes: 15

Views: 23009

Answers (5)

Dmitry Sichev
Dmitry Sichev

Reputation: 320

I found almost the same problem with xml after linux update (and PHP 7.0 -> 7.1 with it).

The solution for me was pretty simple:

sudo apt install php7.1-xml

Upvotes: 6

Thibault Debatty
Thibault Debatty

Reputation: 199

In my case some php packages were not upgraded, so I simply had to perform a dist-upgrade:

sudo apt-get dist-upgrade

Upvotes: -1

Namhyeon Go
Namhyeon Go

Reputation: 673

(In ubuntu 14.04 or above)

sudo apt-get install libapache2-mod-php7.0 libphp7.0-embed libssl-dev openssl php7.0-cgi php7.0-cli php7.0-common php7.0-dev php7.0-fpm php7.0-phpdbg

reference:

https://gnh1201.wordpress.com/2017/07/24/php-7-0-undefined-symbol-php_libxml_node_free_list/

Upvotes: 8

Icarus
Icarus

Reputation: 1864

I experienced the same errors. The reportedly missing files were present, the file permissions looked ok to me, and PHP was executed using the correct user and group.

For me it helped, to remove all PHP packages and do a fresh start.

  1. The following command should remove all PHP packages on a Debian/Ubuntu systems (including the PHP config - make a backup before):

    sudo aptitude purge `dpkg -l | grep php| awk '{print $2}' |tr "\n" " "`
    

    Source: https://askubuntu.com/a/187278

  2. Check if PHP was removed:

    php -v
    

    This should return something like "command not found: php".

  3. Then, install PHP again, e.g.:

    sudo apt-get install php7.1 php7.1-xml php7.1-fpm php7.1-json
    

Upvotes: 0

Fiil
Fiil

Reputation: 1740

Safe solution is to reinstall all php7 related packages.

You can do it by simply entering this command to console:

sudo apt-get install --reinstall `dpkg -l | grep 'ii  php7' | awk '{ printf($2" "); next}'`

This solution will keep your configuration unchanged

Upvotes: 64

Related Questions