Opened 13 years ago

Closed 11 years ago

#28249 closed defect (worksforme)

php5: Symbol not found: _XML_ParserCreate calling wddx_* functions

Reported by: jlist@… Owned by: ryandesign (Ryan Carsten Schmidt)
Priority: Low Milestone:
Component: ports Version: 1.9.2
Keywords: Cc:
Port: php5, php5-devel

Description

Please don't re-categorize this as a php5-wddx issue.

The lib built by php5-wddx works fine for mod_php because that's build by apache2 which is built with expat. But it doesn't work for fastcgi because that's built as part of the php5 port which does not enable expat.

So, when trying to use wddx in fastcgi (or CLI) you get the following error:

Symbol not found: _XML_ParserCreate

Fix for this is something like:

--- Portfile.orig	2011-02-01 22:42:54.000000000 -0800
+++ Portfile	2011-02-01 22:41:47.000000000 -0800
@@ -84,6 +84,7 @@
     --with-mhash=${prefix} \
     --with-pcre-regex=${prefix} \
     --with-readline=${prefix} \
+    --with-libexpat-dir=${prefix} \
     --with-libxml-dir=${prefix} \
     --with-zlib=${prefix} \
     --without-pear \

Change History (8)

comment:1 Changed 13 years ago by ryandesign (Ryan Carsten Schmidt)

Owner: changed from macports-tickets@… to ryandesign@…
Summary: Symbol not found: _XML_ParserCreate calling wddx_* functions in PHPphp5: Symbol not found: _XML_ParserCreate calling wddx_* functions

Interesting; thanks for letting me know. I'll see if I can reproduce this issue and try your fix.

comment:2 Changed 13 years ago by ryandesign (Ryan Carsten Schmidt)

Actually, if you could attach a php file that demonstrates the error, that would be helpful.

comment:3 Changed 13 years ago by ryandesign (Ryan Carsten Schmidt)

Port: php5-devel added

comment:4 Changed 13 years ago by jlist@…

Yes of course, sorry :)

You'll see the problem calling any of the wddx_* functions, for my testing I just called a single function from the command line: php -r "wddx_deserialize('foo');"

Before the fix you should see something like this:

$ php -r "wddx_deserialize('foo');
dyld: lazy symbol binding failed: Symbol not found: _XML_ParserCreate
  Referenced from: /opt/local/lib/php/extensions/no-debug-non-zts-20090626/wddx.so
  Expected in: flat namespace

dyld: Symbol not found: _XML_ParserCreate
  Referenced from: /opt/local/lib/php/extensions/no-debug-non-zts-20090626/wddx.so
  Expected in: flat namespace

Trace/BPT trap
$ 

After the fix, just this:

$ php -r "wddx_deserialize('foo');
$ 

I checked this in 5.3.4 and 5.3.5 - both exhibited the same problem, and same fix.

comment:5 in reply to:  4 Changed 13 years ago by ryandesign (Ryan Carsten Schmidt)

Replying to jlist@…:

You'll see the problem calling any of the wddx_* functions, for my testing I just called a single function from the command line: php -r "wddx_deserialize('foo');"

This does not produce an error for me.

comment:6 Changed 13 years ago by jlist@…

Hmm, before I raised this I had some of my development team try this - and they all had the same error. We're all using +apache2+fastcgi+pear Maybe the problem is in something in there.

comment:7 Changed 12 years ago by ryandesign (Ryan Carsten Schmidt)

Please re-test with the new php53 and php54 ports. I still can't reproduce the issue here.

comment:8 Changed 11 years ago by ryandesign (Ryan Carsten Schmidt)

Resolution: worksforme
Status: newclosed

Presumed fixed.

Note: See TracTickets for help on using tickets.