On 9/13/06, Jean-Sebastien Delfino <[EMAIL PROTECTED]> wrote:

Simon Laws wrote:
> On 9/13/06, Jean-Sebastien Delfino <[EMAIL PROTECTED]> wrote:
>>
>> Simon Laws wrote:
>> > On 9/12/06, Jean-Sebastien Delfino <[EMAIL PROTECTED]> wrote:
>> >>
>> >> Simon Laws wrote:
>> >> > On 9/8/06, Simon Laws <[EMAIL PROTECTED]> wrote:
>> >> >>
>> >> >>
>> >> >>
>> >> >> On 9/8/06, Jean-Sebastien Delfino <[EMAIL PROTECTED]> wrote:
>> >> >> >
>> >> >> > Simon Laws wrote:
>> >> >> > > Earlier I created a patch for a first pass at a PHP extension
>> for
>> >> >> C++
>> >> >> > > SCA (
>> >> >> > > http://issues.apache.org/jira/browse/TUSCANY-698 )
>> >> >> > >
>> >> >> > > This follows the pattern layed down by Andy with the Python
>> >> >> extension
>> >> >> > and
>> >> >> > > has many limitations::
>> >> >> > >
>> >> >> > >   Services only. No references.
>> >> >> > >   Basic input types only. No arrays or SDOs
>> >> >> > >   Single valued return values only. No arrays or SDOs
>> >> >> > >   C++ .h interface
>> >> >> > >   Error handling is not properly tied into SCA
>> >> >> > >
>> >> >> > > I used this as an exercise to understand what Pete/Andy had
>> done.
>> >> As
>> >> >> > > such I
>> >> >> > > have taken the most basic approach to integrating with PHP
>> >> possible.
>> >> >> > > This is
>> >> >> > > not the way I recommend doing it in the long term. In the
>> >> future I
>> >> >> > would
>> >> >> > > want to change at least the following.
>> >> >> > >
>> >> >> > >  The embed API needs to be replaced with the PHP SAPI
>> >> >> > >  References should be supported using annotations and
>> injection
>> >> >> > >  SDO should be supported as a databinding
>> >> >> > >  I would prefer to go to using WSDL interface descriptions
>> >> >> > >
>> >> >> > > I have currently followed the pattern and gone with the
>> following
>> >> >> > > implementation descriptions:
>> >> >> > >
>> >> >> > >  When the script just has functions
>> >> >> > > <implementation.phpmodule="DivideServiceImpl"/>
>> >> >> > >
>> >> >> > >  When the script has classes and functions
>> >> >> > > <implementation.phpmodule="DivideServiceImpl"
>> >> class="DivideClass"/>
>> >> >> > >
>> >> >> > > I wanted to go with module="DivideServiceImpl" but the code
at
>> >> >> present
>> >> >> >
>> >> >> > > adds
>> >> >> > > .componentType to the end of the module name to get the
>> component
>> >> >> type
>> >> >> > > information. I didn;t feel that
>> >> >> DivideServiceImpl.php.componentTypewas
>> >> >> > > right but I'm prepared to be convinced.
>> >> >> > >
>> >> >> > > In the longer term I think it may be sensible to ditch the
>> >> function
>> >> >> > only
>> >> >> > > approach as it makes the reference handling less obvious.
>> >> >> > >
>> >> >> > > I haven't included the build file at present because we
>> need to
>> >> sort
>> >> >> > > out the
>> >> >> > > windows build system and me adding yet another flavour of dev
>> >> studio
>> >> >> > will
>> >> >> > > not help. I have though included Calculator sample files that
>> use
>> >> >> the
>> >> >> > > extension as per Andy's sample so you can look even if you
>> can't
>> >> >> run.
>> >> >> > >
>> >> >> > > Lots more work to do but it's a start.
>> >> >> > >
>> >> >> > > Simon
>> >> >> > >
>> >> >> >
>> >> >> > Simon,
>> >> >> >
>> >> >> > I adjusted our Linux build to integrate your PHP extension, it
>> >> >> builds OK
>> >> >> > for me on Linux using a php-devel-5.0.4-10.5.rpm after a few
>> >> >> changes to
>> >> >> > Makefile.am (I also made a minor change to remove the
dependency
>> on
>> >> >> > CPPInterface like we did in the other extensions).
>> >> >> >
>> >> >> > The build requires the following environment variables:
>> >> >> > PHP_INCLUDE=/usr/include/php
>> >> >> > PHP_LIB=/usr/lib/httpd/modules
>> >> >> >
>> >> >> > Which version of PHP did you use on Windows? I tried PHP
>> >> 5.1.6-2first
>> >> >> > but I'm guessing that you used an older PHP level on Windows
>> since
>> >> >> your
>> >> >> > code uses php_embed.h, which does not seem to exist anymore on
>> >> >> 5.1.6.2.
>> >> >> >
>> >> >> > I'm OK to stay on that older level if it's simpler for you on
>> >> Windows
>> >> >> > for now, or help build and test on a newer level. Let me
know...
>> >> >> Thanks.
>> >> >> >
>> >> >> >
>> >> >> > --
>> >> >> > Jean-Sebastien
>> >> >> >
>> >> >> >
>> >> >> >
>> >>
---------------------------------------------------------------------
>> >> >> > To unsubscribe, e-mail: [EMAIL PROTECTED]
>> >> >> > For additional commands, e-mail: [EMAIL PROTECTED]
>> >> >> >
>> >> >> > Hi Sebastien
>> >> >>
>> >> >> Thanks for doing the linux build and for fixing up the
>> dependency on
>> >> the
>> >> >> C++ extension. I really need to make a README describing how to
>> build
>> >> >> it.
>> >> >> The detail is a little opaque as I haven't made a patch for the
>> >> windows
>> >> >> build files yet. I'm having a little difficulty in getting the
>> right
>> >> >> version
>> >> >> of the Microsoft Developer Tools. Anyhow...
>> >> >>
>> >> >> I'm using PHP5.1.4 on Windows but 5.1.6 should be OK. On
>> windows you
>> >> >> will
>> >> >> have to get the source to get the headers but php5embed.lib is
>> >> provided.
>> >> >> Strange huh.
>> >> >>
>> >> >> To run the calculator sample you need to do a couple of things
>> >> >> 1/ make sure that the directory holding php5embed.lib is on the
>> path,
>> >> >> for
>> >> >> example, create a version of runclient.bat with
>> >> >>    ...
>> >> >>    set PHP_HOME= where ever PHP is installed
>> >> >>    set
>> >> >>
>> >>
>>
PATH=%PHP_HOME%;%TUSCANY_SCACPP%\bin;%TUSCANY_SCACPP%\extensions\cpp\bin;%TUSCANY_SDOCPP%\bin;%AXIS2C_HOME%\lib;%PATH%
>>
>> >>
>> >> >>
>> >> >>
>> >> >>    Client.exe %*
>> >> >>
>> >> >> 2/ make sure that php.ini includes a reference to the directory
>> which
>> >> >> holds the .php file you are going to run as a component, for
>> example,
>> >> my
>> >> >> php.ini is in the same directory as the php.exe and at the end of
>> the
>> >> >> file
>> >> >> I have
>> >> >>
>> >> >>
>> >>
>> >> >>
>> >>
>>
include_path=".;C:\simon\Projects\Eclipse3.2\cpp\sca\samples\Calculator\deploy\packages\CalculatorComposite"
>>
>> >>
>> >> >>
>> >> >>
>> >> >> you can use php -i to find where php is looking for you php.ini
>> >> >> files. 4th
>> >> >> or 5th line down should tell you.
>> >> >>
>> >> >> Apologies again for not yet providing a README that describes all
>> >> this.
>> >> >> I'll get to it shortly. Let me know if this doesn't help.
>> >> >>
>> >> >> Regards
>> >> >>
>> >> >> Simon
>> >> >>
>> >> >>
>> >> >>
>> >> >>
>> >> >>
>> >> >> I should add to the wording of step "1/ make sure that the
>> directory
>> >> > holding php5embed.lib is on the path" a little more detail, i.e.
>> >> > "because
>> >> > this is the place that you will also find php5ts.dll wich is the
>> >> shared
>> >> > library that php5embed.lib provides a front end to and which
>> actually
>> >> > implements the PHP engine"
>> >> >
>> >> > S
>> >> >
>> >>
>> >> Simon,
>> >>
>> >> I am trying to load the PHP extension shared library on Linux and
>> >> getting the following error:
>> >> Unable to load library:
>> >>
>> >>
>>
/home/delfinoj/Tuscany/apache-deploy/cpp/sca/extensions/php/lib/libtuscany_sca_php.so:
>>
>> >>
>> >> /usr/lib/httpd/modules/libphp5.so: undefined symbol:
>> ap_loaded_modules
>> >>
>> >> Does that ring a bell? I linked libtuscany_sca_php.so with
>> libphp5.so,
>> >> am I missing a library?
>> >>
>> >> Thanks,
>> >>
>> >> --
>> >> Jean-Sebastien
>> >>
>> >>
>> >>
---------------------------------------------------------------------
>> >> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> >> For additional commands, e-mail: [EMAIL PROTECTED]
>> >>
>> >> Mmmm, that's not good. The ap_loaded_modules is an HTTPD symbol. PHP
>> >> uses
>> > this in its HTTPD SAPI to find what HTTPD modules are loaded I
>> > believe. Not
>> > sure why its complaining about it in this situation as we shouldn't
be
>> > using
>> > the HTTPD SAPI. Can you tell me what version of PHP you are using and
>> > where
>> > you got it from?
>> >
>> > Regards
>> >
>> > Simon
>> >
>>
>> I was trying PHP5 1.4.10 and 1.5.6 RPMs for Linux Redhat Fedora Core
>> from rpm.pbone.net, then I tried to rebuild both PHP5 1.5.6 and HTTP
>> 2.2.3 fresh from source on my machine... and still got the same
problem.
>>
>> I finally found the right set of build configure options to get around
>> this:
>>
>> If I build PHP with ./configure
--with-apxs2=/usr/local/apache2/bin/apxs
>> (like the example in the PHP INSTALL doc showing how to build to
>> integrate with Apache 2.0)  then I get these ap_* undefined symbol
>> errors.
>>
>> If I build PHP without the Apache 2.0 integration then the
>> tuscany_sca_php.so loads OK without the ap_* undefined symbol errors.
>>
>> So I'm doing that for now, but what if I want to use PHP scripts in my
>> Apache 2.0 server now? am I just left with CGI integration?
>>
>> --
>> Jean-Sebastien
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>> I would have to try it for sure but it maybe it'l will work OK when you
> run from HTTD, i.e. via the HTTPD SAPI. HTTPD should make that symbol
> available. So maybe we are stuck with making two versions. Bit of a
> pain. I
> did a quick Google for the problem and some people have recommended
using
> -rpath to force the runtime path to pick up the correct libraries but
> this
> would be a pain and wouldn't be portable. When I get back to C++ I'll
> try it
> out and see if I get the same problem. It'll be a few days though. Are
> you
> OK to continue with the solution you've found for now?
>
> S
>

Yes :)

--
Jean-Sebastien


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


Ok, thanks Sebastien for chasing this.

S

Reply via email to