cvs commit: hints apache2+php4+htdig.txt

timothy at timothy at
Sat Jul 27 08:50:19 PDT 2002

timothy     02/07/27 08:50:19

  Added:       .        apache2+php4+htdig.txt
  Initial commit.
  Revision  Changes    Path
  1.1                  hints/apache2+php4+htdig.txt
  Index: apache2+php4+htdig.txt
  TITLE:		Apache2+PHP4+Htdig
  LFS VERSION:	3.1 and up
  AUTHOR:		Marcos Zapata <zeta11 at>
      How to setup PHP4 with Apache2 and ht://Dig.
  When I first try to compile PHP4 for Apache 2, I couldn't because of the new
  layered I/O support implemented. I read the README in sapi/apache2filter, but
  it didn't help and didn't want to go back to apache-1.3.x, so this is how I had
  to do it:
  You can download apache from and PHP from I'm going to use httpd-2.0.39.tar.gz and php-4.2.1.tar.bz2.
  #Remember to change '--prefix=' to reflect the layout in your system, I prefer
  #to use a non-standard location for these packages. If you built LFS, you should
  #have installed openssl and perl, if not remove these options from configure.
  tar -zxvf httpd-2.0.39.tar.gz
  cd httpd-2.0.39
  ./configure --prefix=/opt/httpd-2.0.39 --enable-ssl --enable-cgi --enable-so \
  --enable-modules=all --with-perl --enable-shared=max
  make install
  Check if you have a nobody user defined, if not add it with useradd, something
  like: 'useradd nobody' should suffice. Now let see if everything went fine:
  /opt/httpd-2.0.39/bin/apachectl start
  Use lynx, nmap, netstat or whatever tool you use to see if the server is
  running. If you have lynx: 'lynx http://localhost/' will give you a page that
  shows a successfully installation of apache. If you don't have it you could
  use 'netstat -l | grep www', will show a line similar to this one:
  'tcp	0	0 *:www		*.*	LISTEN'
  Now, that we are sure:
  /opt/httpd-2.0.39/bin/apachectl stop
  ,just for a while to install PHP.
  tar -jxvf php-4.2.1.tar.bz2
  cd  php-4.2.1
  #PHP gives you tons of options, use the ones that you need. Check them with
  #'./configure --help'. If you don't have mysql installed, php will build a
  #built-in module for it. I use the following options:
  ./configure --prefix=/opt/httpd-2.0.39  \
  --with-config-file-path=/opt/httpd-2.0.39/conf --without-pear --with-openssl  \
  --with-zlib --with-bz2 --enable-calendar --with-gdbm --with-db3 --with-gmp  \
  --with-mysql --with-ncurses --with-pgsql
  make install
  OK, we have to add some options to /opt/httpd-2.0.39/conf/httpd.conf:
  echo "ScriptAlias /php/ \"/opt/httpd-2.0.39/bin/\"" >>  \
  echo "Action application/x-httpd-php \"/php/php\"" >> \
  echo "AddType application/x-httpd-php .php" >>
  This is vital. Make sure you change /php/ to point to where you installed these
  Create a test file:
  echo "<? phpinfo(); ?>" > /opt/httpd-2.0.39/htdocs/test.php
  It's time to see if everything went fine, restart the server with:
  /opt/httpd-2.0.39/bin/apachectl start
  You'l need lynx or another web browser now, with lynx do:
  lynx http://localhost/test.php
  This page will show you information about PHP and your system. If you were able
  to see it, the instalation was successful. You can delete test.php now.
  Following the LFS style we...:
  ln -s /opt/httpd-2.0.39 /opt/apache2
  OK, now we need a boot script, create it with:
  cat > /etc/rc.d/init.d/apache << "EOF"
  source /etc/rc.d/init.d/functions
  case "$1" in
  	echo "Starting web server..."
  	loadproc /opt/apache2/bin/httpd
  	echo "Stopping web server..."
  	killproc /opt/apache2/bin/httpd
  	$0 stop
  	sleep 1
  	$0 start
  	statusproc /opt/apache2/bin/httpd
  	echo "Usage: $0 {start|stop|restart|status}"
  	exit 1
  chmod a+x /etc/rc.d/init.d/apache
  Remember to make the symlinks in /etc/rc.d/rc*.d.
  An interesting package to be used in a web server is htdig, but it was very
  tricky to install in my LFS. You can download it from
  tar -zxvf htdig-3.1.6.tar.gz
  cd htdig-3.1.6
  cp configure configure.bak
  sed -e "s/ofstream=1/ofstream=0/" configure.bak > configure
  I had to do this because it didn't recognize my gcc instalation.
  Edit htlib/htString.h to force it to use iostream.h, comment it like this:
  // #ifdef HAVE_OSTREAM_H
  // #include <ostream.h>
  // #endif
  // #ifdef HAVE_IOSTREAM_H
  #include <iostream.h>
  // #endif
  Only leave '#include <iostream.h>' uncommented. Now we won't have any trouble
  ./configure --prefix=/opt/httpd-2.0.39  \
  --with-config-dir=/opt/httpd-2.0.39/conf  \
  --with-common=/opt/httpd-2.0.39/common  \
  --with-database-dir=/opt/httpd-2.0.39/db  \
  --with-cgi-bin-dir=/opt/httpd-2.0.39/cgi-bin  \
  --with-image-dir=/opt/httpd-2.0.39/htdocs/htdig  \
  make install
  To start using it, you have to edit /opt/apache2/conf/htdig.conf. As an
  example change 'start_url:' to 'http://localhost/' and run:
  It will take a while to build the search database, you can safely ignore any
  warning message. To give it a try: 'lynx http://localhost/htdig/search.html'.
  Voila! We're done. Remember to change all configuration files to reflect your
  system layout and run 'rundig' again, also to read all documentation. Good luck.
Unsubscribe: send email to listar at
and put 'unsubscribe hints' in the subject header of the message

More information about the hints mailing list