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
