Simon Laws wrote:
On 1/9/07, Jean-Sebastien Delfino <[EMAIL PROTECTED]> wrote:
Simon Laws wrote:
> Ok, so after a rather lengthy (and relaxing) Christmas break I'm
> starting to
> work again on building up the PHP capability in the C++ SCA
> implementation.
> There was some work done before Christmas documented on our PHP SCA
site
> here [1]. There were some previous mail exchanges talking about the
> problem
> generally [2] and talking about the slight discontinuity between
the way
> that composition is represented in PHP SCA annotations compared to the
> SCA
> SCDL files in C++ SCA [3].
>
> The first thing I'm going to do is get the existing C++ PHP Extension
> up and
> running again and submit any changes that are required now that C++
> SCA has
> moved on and I'm on to a new version of PHP. I'll add some more detail
to
> the README about what to do. This note was just to get the ball
rolling
> again so I'm sure there will be lots more issues to discuss very
shortly.
>
> Regards
>
> Simon
>
> [1] -
> http://www.osoa.org/display/PHP/PHP+SCA+Extension+For+Tuscany+CPP+SCA
> [2] -
> http://www.mail-archive.com/tuscany-dev%40ws.apache.org/msg11572.html
> [3] -
> http://www.mail-archive.com/tuscany-dev%40ws.apache.org/msg11747.html
>
Simon,
How are you building the PHP runtime to work both with the PHP SCA_SDO
package at http://pecl.php.net/package/SCA_SDO and the Tuscany PHP
extension?
I built PHP 5.2.0 on my Linux box like this:
./configure --prefix=/home/delfinoj/Tuscany/php5/php-5.2.0-bin
--with-apxs2 --enable-embed
make
make install
--enable-embed allows linking with extension (and in particular the
Tuscany extension)
--with-apxs2 allows PHP5 to run as an Apache2 module (rather than CGI).
I then built and linked the Tuscany extension to libphp5.so, like this:
libtuscany_sca_php_la_LIBADD = -L${TUSCANY_SDOCPP}/lib -ltuscany_sdo \
-L$(top_builddir)/runtime/core/src -ltuscany_sca \
-L${PHP_LIB} -lphp5
INCLUDES = -Imodel -I$(top_builddir)/runtime/core/src \
-I${TUSCANY_SDOCPP}/include \
-I${PHP_INCLUDE} \
-I${PHP_INCLUDE}/main \
-I${PHP_INCLUDE}/Zend \
-I${PHP_INCLUDE}/TSRM \
-I${PHP_INCLUDE}/sapi/embed
The problem is that when I try to run Tuscany outside of Httpd (from the
command line) the PHP extension won't load, complaining about unresolved
references to Httpd symbols. Here's the log:
2555:3086005952 Library:
/home/delfinoj/Tuscany/apache-deploy/cpp/sca/extensions/php/lib/libtuscany_sca_php.so
2555:3086005952 SystemConfigurationException raised: Unable to load
library:
/home/delfinoj/Tuscany/apache-deploy/cpp/sca/extensions/php/lib/libtuscany_sca_php.so:
/home/delfinoj/Tuscany/php5/php-5.2.0-bin/lib/libphp5.so: undefined
symbol: ap_rwrite
2555:3086005952 SystemConfigurationException raised: Unable to load
library:
/home/delfinoj/Tuscany/apache-deploy/cpp/sca/extensions/php/lib/libtuscany_sca_php.so:
/home/delfinoj/Tuscany/php5/php-5.2.0-bin/lib/libphp5.so: undefined
symbol: ap_rwrite
2555:3086005952 << void tuscany::sca::util::Library::load()
The unresolved symbol, ap_rwrite is in Httpd protocol.c, part of the
core Httpd server. Did you run into this issue with PHP SCA_SDO? Are
people using two different PHP libraries, one for use inside Httpd the
other for use outside?
Thanks,
--
Jean-Sebastien
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
Hi Jean-Sebastien
The truth is I'm not yet so I may not be much helkp to you. I'm
struggling
to get C++/SCA to run again due to the start up crash I'm
investigating:-(
I did have this working on windows before Christmas though but I didn't
cross the bridge of running it in Apache. I ran it from the Axis
standalone
server.
Having said this I have PHP compile to integrate with Apache on both
of my
linux boxes. One uses --enable-fastcgi and the other --with-apxs2. In
both
of these cases I can run the CLI version of PHP i.e. I can run without
Apache OK. Neither of these are compiled with embedding turned on
though so
there may be some problem there.
I have only compiled for embedding on windows to date where I have my
Apache
integration set to --enable-fastcgi (nothing like a bit of variety).
In the
windows case though the embedding API is compiled into a separate
library. I
don't believe that is relevant though.
So a couple of things to try.
Can you try running PHP from the command line to check that it works
stand
alone.
- you might need to do a make install-cli
By way of experiment can you
- link with the Apache libraries that provide the missing function
- build PHP with cgi Apache integration and see if that works
- build PHP without Apache integration and see if that works.
The only reference to problems with ap_rwite that I found with a quick
Google search was from someone trying to integrate with Apache and they
solved it with a clean rebuild so not very helpful.
It may be that you have to suffer with building PHP for different
environments.
Simon
Simon,
I followed your advice and found a combination that works on Linux:
To build the PHP 5.2.0 runtime:
./configure --prefix=/home/delfinoj/Tuscany/php5/php-5.2.0-bin
--with-apxs2 --enable-embed=static
make
make install
To build the PHP extension:
libtuscany_sca_php_la_LIBADD = -L${TUSCANY_SDOCPP}/lib -ltuscany_sdo \
-L$(top_builddir)/runtime/core/src -ltuscany_sca \
-L${PHP_LIB} -lphp5 -lresolv
--enable-embed=static allows the PHP extension shared lib to link with
the PHP extension SAPI without creating a dependency on the Apache HTTPD
runtime (which is in the server executable instead of a lib and
therefore not available in a client).
-lresolv satisfies the PHP runtime dependency on the DNS resolver library.
With this configuration I can see the Tuscany runtime load and
initialize the PHP extension.
--
Jean-Sebastien
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]