1 (edited by pcollinson 2016-10-15 07:31:25)

Topic: PHP Warning: curl.so: undefined symbol: zend_unset_property

Running on CentOs 6.8 - and updating PHP 5.6 to 5.6.27 -
Yum says:

Updating   : php-common-5.6.27-1.el6.remi.x86_64
  Updating   : php-pecl-zip-1.13.5-1.el6.remi.5.6.x86_64
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/curl.so' - /usr/lib64/php/modules/curl.so: undefined symbol: zend_unset_property in Unknown on line 0
  Updating   : php-pdo-5.6.27-1.el6.remi.x86_64

etc

I am guessing that the warning comes from the php-common install that's happening in parallel.

Is this anything to worry about? A quick curl test seems to show it's working.

Re: PHP Warning: curl.so: undefined symbol: zend_unset_property

> I am guessing that the warning comes from the php-common install that's happening in parallel.

Yes, the new symbol is not yet available when php-common / php-pecl-zip are installed, only later with php-cli.

This can be safely ignored

Check: "php -v" should not raise any message.

# php -v
PHP 5.6.27 (cli) (built: Oct 14 2016 14:06:54) 
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

P.S. new symbols should not be added in a stable version... but this is part of a security fix.

Laptop:  Fedora 38 + rpmfusion + remi (SCL only)
x86_64 builder: Fedora 39 + rpmfusion + remi-test
aarch64 builder: RHEL 9 with EPEL
Hosting Server: CentOS 8 Stream with EPEL, rpmfusion, remi

3 (edited by pcollinson 2016-10-15 07:32:48)

Re: PHP Warning: curl.so: undefined symbol: zend_unset_property

Thanks I'll update my machines and thanks for the security fix.

Re: PHP Warning: curl.so: undefined symbol: zend_unset_property

Additional notice, all versions have the same message (5.5, 5.6, 7.0 and 7.1), base or SCL packages.

Laptop:  Fedora 38 + rpmfusion + remi (SCL only)
x86_64 builder: Fedora 39 + rpmfusion + remi-test
aarch64 builder: RHEL 9 with EPEL
Hosting Server: CentOS 8 Stream with EPEL, rpmfusion, remi

Re: PHP Warning: curl.so: undefined symbol: zend_unset_property

Hello,

I have the same problem. Can you tell me how to resolve it ?
Thanks.

Re: PHP Warning: curl.so: undefined symbol: zend_unset_property

Nothing to resolve.

After the update, check: "php -v" should not raise any message.

Laptop:  Fedora 38 + rpmfusion + remi (SCL only)
x86_64 builder: Fedora 39 + rpmfusion + remi-test
aarch64 builder: RHEL 9 with EPEL
Hosting Server: CentOS 8 Stream with EPEL, rpmfusion, remi

Re: PHP Warning: curl.so: undefined symbol: zend_unset_property

The php -v doesn't raise any messages (except PHP Warning:  Module 'PDO' already loaded in Unknown on line 0)
But when I use the curl_init() function it fails :
"Attempted to call function "curl_init" from the global namespace".
I have this error since the update of php-common.

Re: PHP Warning: curl.so: undefined symbol: zend_unset_property

Minimal script example ?

Laptop:  Fedora 38 + rpmfusion + remi (SCL only)
x86_64 builder: Fedora 39 + rpmfusion + remi-test
aarch64 builder: RHEL 9 with EPEL
Hosting Server: CentOS 8 Stream with EPEL, rpmfusion, remi

Re: PHP Warning: curl.so: undefined symbol: zend_unset_property

> The php -v doesn't raise any messages (except PHP Warning:  Module 'PDO' already loaded in Unknown on line 0)

You have probably edited some .ini file to add the extension=pdo.so, when this one is already on pdo.ini.

Laptop:  Fedora 38 + rpmfusion + remi (SCL only)
x86_64 builder: Fedora 39 + rpmfusion + remi-test
aarch64 builder: RHEL 9 with EPEL
Hosting Server: CentOS 8 Stream with EPEL, rpmfusion, remi

Re: PHP Warning: curl.so: undefined symbol: zend_unset_property

I'm using the framework symfony 3 and when it it tries to initialize the curl session, I have this error :
UndefinedFunctionException: Attempted to call function "curl_init" from the global namespace
Here's the function :
......
private function _initAndConfigure()
    {
        /*********************************************************
         * initialize the CURL session
        *********************************************************/
        $ch = curl_init($this->url);

        if (version_compare(PHP_VERSION, '5.1.3', '>=')) {
            //only avaible in php5
            curl_setopt_array($ch, $this->_curlOptions);
        } else {
            foreach ($this->_curlOptions as $key => $value) {
                curl_setopt($ch, $key, $value);
            }
        }

....

Re: PHP Warning: curl.so: undefined symbol: zend_unset_property

Sorry, but I cannot reproduce. And this error message is not from PHP.

Looks like a synfony one, from debug component for undefined function.

php -m
rpm -qa php\* | sort

Laptop:  Fedora 38 + rpmfusion + remi (SCL only)
x86_64 builder: Fedora 39 + rpmfusion + remi-test
aarch64 builder: RHEL 9 with EPEL
Hosting Server: CentOS 8 Stream with EPEL, rpmfusion, remi

Re: PHP Warning: curl.so: undefined symbol: zend_unset_property

Hi,
I have the same error

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

No idea how to fix it. Can someone help?


From phpinfo:

/etc/php/5.6/apache2/conf.d/10-mysqlnd.ini, /etc/php/5.6/apache2/conf.d/10-opcache.ini, /etc/php/5.6/apache2/conf.d/10-pdo.ini, /etc/php/5.6/apache2/conf.d/15-xml.ini, /etc/php/5.6/apache2/conf.d/20-calendar.ini, /etc/php/5.6/apache2/conf.d/20-ctype.ini, /etc/php/5.6/apache2/conf.d/20-curl.ini, /etc/php/5.6/apache2/conf.d/20-dom.ini, /etc/php/5.6/apache2/conf.d/20-exif.ini, /etc/php/5.6/apache2/conf.d/20-fileinfo.ini, /etc/php/5.6/apache2/conf.d/20-ftp.ini, /etc/php/5.6/apache2/conf.d/20-gettext.ini, /etc/php/5.6/apache2/conf.d/20-iconv.ini, /etc/php/5.6/apache2/conf.d/20-json.ini, /etc/php/5.6/apache2/conf.d/20-mbstring.ini, /etc/php/5.6/apache2/conf.d/20-mysql.ini, /etc/php/5.6/apache2/conf.d/20-mysqli.ini, /etc/php/5.6/apache2/conf.d/20-pdo_mysql.ini, /etc/php/5.6/apache2/conf.d/20-phar.ini, /etc/php/5.6/apache2/conf.d/20-posix.ini, /etc/php/5.6/apache2/conf.d/20-readline.ini, /etc/php/5.6/apache2/conf.d/20-shmop.ini, /etc/php/5.6/apache2/conf.d/20-simplexml.ini, /etc/php/5.6/apache2/conf.d/20-sockets.ini, /etc/php/5.6/apache2/conf.d/20-sysvmsg.ini, /etc/php/5.6/apache2/conf.d/20-sysvsem.ini, /etc/php/5.6/apache2/conf.d/20-sysvshm.ini, /etc/php/5.6/apache2/conf.d/20-tokenizer.ini, /etc/php/5.6/apache2/conf.d/20-wddx.ini, /etc/php/5.6/apache2/conf.d/20-xmlreader.ini, /etc/php/5.6/apache2/conf.d/20-xmlwriter.ini, /etc/php/5.6/apache2/conf.d/20-xsl.ini, /etc/php/5.6/apache2/conf.d/20-zip.ini

Thanks!

Re: PHP Warning: curl.so: undefined symbol: zend_unset_property

@johnsnow, according to the ini list, this is NOT an installation from my RPMs (so, can't help)

Laptop:  Fedora 38 + rpmfusion + remi (SCL only)
x86_64 builder: Fedora 39 + rpmfusion + remi-test
aarch64 builder: RHEL 9 with EPEL
Hosting Server: CentOS 8 Stream with EPEL, rpmfusion, remi

Re: PHP Warning: curl.so: undefined symbol: zend_unset_property

So I have about 5-10 messages per second of this message on CentOS 7, and PHP 7.0.11. Safely ignoring is kind of a problem when your disk fills up with these messages. Is there a work around to not have the error message at all? Is this fixed in 7.0.12?

PS: curl works, so seems cosmetic, but we have alerts on error logs, and I want to make sure we don't have false positives.

Re: PHP Warning: curl.so: undefined symbol: zend_unset_property

Which message ?
"undefined symbol" means the extension cannot be loaded, so "CAN'T" work.

This message should only appear during the update (when php-common (curl.so) is updated before php-cli), but should never appear later.

Again:

rpm -Va php\*
rpm -qa php\*
php -m
Laptop:  Fedora 38 + rpmfusion + remi (SCL only)
x86_64 builder: Fedora 39 + rpmfusion + remi-test
aarch64 builder: RHEL 9 with EPEL
Hosting Server: CentOS 8 Stream with EPEL, rpmfusion, remi

Re: PHP Warning: curl.so: undefined symbol: zend_unset_property

Thanks I'll update my machines and thanks for the security fix.