Talk:How to set up PHP under AOLserver

From AOLserver Wiki
Revision as of 17:44, 12 December 2005 by Caveman (talk | contribs) (corrected capitalisation use of AOLserver)
Jump to navigation Jump to search

I cannot get php-5.1.1 to build with Debian 3.1 package of aolserver4 and aolserver4-dev (which is built with --prefix=/usr/lib/aolserver4):

sam@caveman:~/downloads/php.net/php-5.1.1$ ./configure --with-aolserver=/usr/lib/aolserver4
loading cache ./config.cache
...
...

Configuring SAPI modules
checking for AOLserver support... /usr/lib/aolserver4
configure: error: Please specify the path to the source distribution of AOLserver using --with-aolserver-src=DIR
sam@caveman:~/downloads/php.net/php-5.1.1$
  • I only ever tested this against PHP 4.3.7 -- I don't know what is required to make it work with PHP 5.1.1. If you figure it out, please update the page. -- Dossy 12:05, 7 December 2005 (EST)
    • I opened a PHP bug issue for this: [1] --Caveman 14:05, 8 December 2005 (EST)
      • This may be an issue more with the way Debian 3.1 installs AOLserver 4 than anything else. The "proper" PHP configure command should be:
./configure --with-aolserver=/path/to/installed/aolserver

Debian 3.1 configures AOLServer with a prefix of "/usr/lib/aolserver4". However, using this as the "/path/to/installed/aolserver" results in the same error and a request for "--with-aolserver-src".

        • I configured and installed aolserver4 from source into "/home/sam/aolserver". PHP configure finally completed successfully. However, PHP compile still failed:
/bin/sh /home/sam/downloads/php.net/php-5.1.1/libtool --silent --preserve-dup-deps --mode=compile /home/sam/downloads/php.net/php-5.1.1/meta_ccld  -Isapi/aolserver/ -I/home/sam/downloads/php.net/php-5.1.1/sapi/aolserver/ -DPHP_ATOM_INC -I/home/sam/downloads/php.net/php-5.1.1/include -I/home/sam/downloads/php.net/php-5.1.1/main -I/home/sam/downloads/php.net/php-5.1.1 -I/home/sam/aolserver/include -I/usr/include/libxml2 -I/home/sam/downloads/php.net/php-5.1.1/ext/date/lib -I/home/sam/downloads/php.net/php-5.1.1/TSRM -I/home/sam/downloads/php.net/php-5.1.1/Zend  -D_REENTRANT  -g -O2 -pthread -DZTS  -prefer-non-pic -c /home/sam/downloads/php.net/php-5.1.1/sapi/aolserver/aolserver.c -o sapi/aolserver/aolserver.lo
In file included from /home/sam/aolserver/include/ns.h:62,
                 from /home/sam/downloads/php.net/php-5.1.1/sapi/aolserver/aolserver.c:49:
/home/sam/aolserver/include/nsthread.h:125:17: tcl.h: No such file or directory

This was obviously an error finding "tcl.h". I manually edited the PHP "Makefile" and set:

EXTRA_INCLUDES = -I/usr/include/tcl8.4

This allowed PHP compilation to complete. The module loaded successfully and PHP scripts work as expected (see phpinfo output). --Caveman 19:05, 8 December 2005 (EST)


With trial and error, I was able to configure and compile against the Debian 3.1 packages as installed by default:

./configure --with-aolserver=/usr
make "EXTRA_INCLUDES=-I/usr/include/tcl8.4 -I/usr/include/aolserver4"

extending PHP to take advantage of AOLServer

http://aolserver.org/docs/devel/c/api/c-ch3.htm#37064

proposal: write a PHP extension to provide PHP functions to access AOLserver database pools (and perhaps other important features like shared memory).

In other words, provide PHP functions:

ns_db_gethandle
ns_db_select

And so on. It should be nearly trivial to do this, and give PHP on AOLserver a very powerful advantage over PHP on Apache.

Extending PHP By Sterling Hughes

sam@caveman:~/downloads/php.net/php-5.1.1/ext$ ./ext_skel --extname=nsdb
Creating directory nsdb
Creating basic files: config.m4 config.w32 .cvsignore nsdb.c php_nsdb.h CREDITS EXPERIMENTAL tests/001.phpt nsdb.php [done].

To use your new extension, you will have to execute the following steps:

1.  $ cd ..
2.  $ vi ext/nsdb/config.m4
3.  $ ./buildconf
4.  $ ./configure --[with|enable]-nsdb
5.  $ make
6.  $ ./php -f ext/nsdb/nsdb.php
7.  $ vi ext/nsdb/nsdb.c
8.  $ make

Repeat steps 3-6 until you are satisfied with ext/nsdb/config.m4 and
step 6 confirms that your module is compiled into PHP. Then, start writing
code and repeat the last two steps as often as necessary.