Re: Can we call Apache 2 API function from a PHP 5 extension module?

From: Date: Mon, 18 Jan 2010 01:19:30 +0000
Subject: Re: Can we call Apache 2 API function from a PHP 5 extension module?
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-46772@lists.php.net to get a copy of this message
Are you turning warnings into errors (would have thought that was a warning, not an error)? Normally you wouldn't call apache functions to write data, you would call the PHP SAPI write function. This way your extension works with output buffering on or off. Brian On Jan 17, 2010, at 5:18 PM, rwe rt wrote: > Hi Brian, > I followed your suggestion but I still got the same error message: > ext/hello/.libs/hello.o: In function > zif_confirm_hello_compiled':/home/www/php-5.3.1/ext/hello/hello.c:168: > undefined reference to ap_rprintf'collect2: ld returned 1 exit statusmake: *** > [sapi/cli/php] Error 1 > Thanks for further help,Rwe > --- On Sun, 1/17/10, Brian J. France <brian@brianfrance.com> wrote: > > From: Brian J. France <brian@brianfrance.com> > Subject: Re: [PHP-DEV] Can we call Apache 2 API function from a PHP 5 extension module? > To: "rwe rt" <rwe_rt@yahoo.com> > Cc: internals@lists.php.net > Received: Sunday, January 17, 2010, 1:05 AM > > Try this instead: > > request_rec *r = (request_rec *)(((SG(server_context) == NULL) ? NULL : > ((php_struct*)SG(server_context))->r)); > > Apache 2.x server_context is not a request_rec, it is a struct with a request rec in it. > > Brian > > > On Jan 16, 2010, at 7:25 PM, rwe rt wrote: > >> Hi all,I compiled php-5.3.1 with apache 2.2.14 as DSO and wanted to test how to call Apache >> API from a PHP module:Run ./ext_skel --extname=helloModified ext/hello.c and the function >> PHP_FUNCTION(confirm_hello_compiled) so that it contains >> >> #include "SAPI.h" >> #include "httpd.h" >> #include "http_config.h" >> #include "http_protocol.h" >> #include "ap_config.h" >> request_rec *hello_r;PHP_FUNCTION(confirm_hello_compiled) { hello_r = (request_rec >> *)SG(server_context); ap_rprintf(hello_r, "Hello world\n"); return SUCCESS; >> }Under php root, run ./buildconf and ./configure --with-apxs=/home/www/bin/apxs >> --enable-helloIt worked fine. But when I furhter ran: >> >> makeI got an error like:....ext/hello/.libs/hello.o: In function >> zif_confirm_hello_compiled': /home/www/php-5.3.1/ext/hello/hello.c:167: undefined reference >> toap_rprintf'near the end of compiling.As far as I know, PHP 5 can only be compiled as DSO and >> don't have access to compiled objects in Apache 2 directly. How to modify config.m4 or other >> files so that I can make compiling successful? Any help would be greatly appreciated!Rwe >> >> >> __________________________________________________________________ >> Be smarter than spam. See how smart SpamGuard is at giving junk email the boot with the >> All-new Yahoo! Mail. Click on Options in Mail and switch to New Mail today or register for free at >> http://mail.yahoo.ca > > > > > __________________________________________________________________ > Get a sneak peak at messages with a handy reading pane with All new Yahoo! Mail: > http://ca.promos.yahoo.com/newmail/overview2/

« previous php.internals (#46772) next »