If you have compiled php without specifying a --with-config-file-path=PATH
then reconfigure php using --with-config-file-path=PATH, you must do a "make clean" then "make" & "make install" before reinstalling. If you don't make clean first, phpinfo will report the new location set by --with-config-file-path=PATH, but actually be looking for php.ini in the old location.
I'm not sure if this is intended behavior or not but this is a gotcha that got me after compiling, then reconfiguring, then doing make install. It caused a little head scratching.
It's good practice to do make clean after any configuration change anyway. Bite the bullet and take the time to do it right to avoid unexpected module behavior.
-Neil
Configure options
List of core configure options
Below is a partial list of configure options used by the PHP configure scripts when compiling in Unix-like environments. Most configure options are listed in their appropriate locations on the extension reference pages and not here. For a complete up-to-date list of configure options, run ./configure --help in your PHP source directory after running autoconf (see also the Installation chapter). You may also be interested in reading the » GNU configure documentation for information on additional configure options such as --prefix=PREFIX.
Note: These are only used at compile time. If you want to alter PHP's runtime configuration, please see the chapter on Runtime Configuration.
Configure Options in PHP
Note: These options are only used in PHP as of PHP 4.1.0, although some are available in older versions too. If you want to compile an older version, some options will probably not be available.
Misc options
- --enable-debug
-
Compile with debugging symbols.
- --with-layout=TYPE
-
Sets how installed files will be laid out. Type is one of PHP (default) or GNU.
- --with-pear=DIR
-
Install PEAR in DIR (default PREFIX/lib/php).
- --without-pear
-
Do not install PEAR.
- --enable-sigchild
-
Enable PHP's own SIGCHLD handler.
- --disable-rpath
-
Disable passing additional runtime library search paths.
- --enable-libgcc
-
Enable explicitly linking against libgcc.
- --enable-php-streams
-
Include experimental PHP streams. Do not use unless you are testing the code!
- --with-zlib-dir[=DIR]
-
Define the location of zlib install directory.
- --enable-trans-sid
-
Enable transparent session id propagation. Only valid for PHP 4.1.2 or less. From PHP 4.2.0, trans-sid feature is always compiled.
- --with-tsrm-pthreads
-
Use POSIX threads (default).
-
Build shared libraries [default=yes].
- --enable-static[=PKGS]
-
Build static libraries [default=yes].
- --enable-fast-install[=PKGS]
-
Optimize for fast installation [default=yes].
- --with-gnu-ld
-
Assume the C compiler uses GNU ld [default=no].
- --disable-libtool-lock
-
Avoid locking (might break parallel builds).
- --with-pic
-
Try to use only PIC/non-PIC objects [default=use both].
- --enable-memory-limit
-
Compile with memory limit support. (not available since PHP 5.2.1 - always enabled)
- --disable-url-fopen-wrapper
-
Disable the URL-aware fopen wrapper that allows accessing files via HTTP or FTP. (not available since PHP 5.2.5)
- --enable-versioning
-
Export only required symbols. See INSTALL for more information.
PHP options
- --enable-maintainer-mode
-
Enable make rules and dependencies not useful (and sometimes confusing) to the casual installer.
- --with-config-file-path=PATH
-
Sets the path in which to look for php.ini, defaults to PREFIX/lib.
- --enable-safe-mode
-
Enable safe mode by default.
- --with-exec-dir[=DIR]
-
Only allow executables in DIR when in safe mode defaults to /usr/local/php/bin.
- --enable-magic-quotes
-
Enable magic quotes by default.
-
Disable the short-form <? start tag by default.
SAPI options
The following list contains the available SAPI&s (Server Application Programming Interface) for PHP.
- --with-aolserver=DIR
-
Specify path to the installed AOLserver.
- --with-apxs[=FILE]
-
Build shared Apache module. FILE is the optional pathname to the Apache apxs tool; defaults to apxs. Make sure you specify the version of apxs that is actually installed on your system and NOT the one that is in the apache source tarball.
- --with-apache[=DIR]
-
Build a static Apache module. DIR is the top-level Apache build directory, defaults to /usr/local/apache.
- --with-mod_charset
-
Enable transfer tables for mod_charset (Russian Apache).
- --with-apxs2[=FILE]
-
Build shared Apache 2.0 module. FILE is the optional pathname to the Apache apxs tool; defaults to apxs.
- --with-caudium=DIR
-
Build PHP as a Pike module for use with Caudium. DIR is the Caudium server dir, with the default value /usr/local/caudium/server.
- --disable-cli
-
Available with PHP 4.3.0. Disable building the CLI version of PHP (this forces --without-pear). More information is available in the section about Using PHP from the command line.
- --enable-embed[=TYPE]
-
Enable building of the embedded SAPI library. TYPE is either shared or static, which defaults to shared. Available with PHP 4.3.0.
- --with-fhttpd[=DIR]
-
Build fhttpd module. DIR is the fhttpd sources directory, defaults to /usr/local/src/fhttpd. No longer available as of PHP 4.3.0.
- --with-isapi=DIR
-
Build PHP as an ISAPI module for use with Zeus.
- --with-nsapi=DIR
-
Specify path to the installed Netscape/iPlanet/SunONE Webserver.
- --with-phttpd=DIR
-
No information yet.
- --with-pi3web=DIR
-
Build PHP as a module for use with Pi3Web.
- --with-roxen=DIR
-
Build PHP as a Pike module. DIR is the base Roxen directory, normally /usr/local/roxen/server.
- --enable-roxen-zts
-
Build the Roxen module using Zend Thread Safety.
- --with-servlet[=DIR]
-
Include servlet support. DIR is the base install directory for the JSDK. This SAPI requires the java extension must be built as a shared dl.
- --with-thttpd=SRCDIR
-
Build PHP as thttpd module.
- --with-tux=MODULEDIR
-
Build PHP as a TUX module (Linux only).
- --with-webjames=SRCDIR
-
Build PHP as a WebJames module (RISC OS only)
- --disable-cgi
-
Disable building CGI version of PHP. Available with PHP 4.3.0.
- --enable-force-cgi-redirect
-
Enable the security check for internal server redirects. You should use this if you are running the CGI version with Apache.
- --enable-discard-path
-
If this is enabled, the PHP CGI binary can safely be placed outside of the web tree and people will not be able to circumvent .htaccess security.
- --with-fastcgi
-
Build PHP as FastCGI application. No longer available as of PHP 4.3.0, instead you should use --enable-fastcgi.
- --enable-fastcgi
-
If this is enabled, the CGI module will be built with support for FastCGI also. Available since PHP 4.3.0
- --disable-path-info-check
-
If this is disabled, paths such as /info.php/test?a=b will fail to work. Available since PHP 4.3.0. For more information see the » Apache Manual.
Configure options
04-Mar-2008 06:07
07-Feb-2008 10:52
It's not stated clearly anywhere in the documentation, but the CGI version won't build if you specify the --with-apxs= option to configure (the CLI version will, however). The only way I found to have *both* Apache module *and* CGI versions of PHP installed was to run configure/make twice - first with --with-apxs= option, to build the Apache module, then without it, to build the CGI binary.
I think if the doc says that the CGI version is built by default, it *should* be built by default, unless you specify --disable-cgi. If --with-apxs= automatically disables CGI, the --disable-cgi option doesn't seem to have any use.
30-Nov-2006 11:26
Note: PHP5 has a zillion dependencies on libxml, it is not practical to disable it, you must install it.
libxml can be found here: http://www.xmlsoft.org/
But this is actualy a good thing; "Almost everything regarding XML support was rewritten for PHP 5".
For more info see: http://www.zend.com/php5/articles/php5-xmlphp.php
09-Jul-2005 04:26
If you'e compiling a shared extension (e.g. pspell) whose libs & headers are not in the usual place, use the following:
--with-pspell=shared,/my/custom/path/to/pspell/
Took me forever to figure out, since Google had no answer for me.
14-Apr-2005 10:15
If some options do not become active after doing a configure; make; make install, try to do a make clean after configure. That worked for me when enabling memory limts (--enable-memory-limit).
>/usr/local/lib needs to be listed in /etc/ld.so.conf, but it should already
>be there on most systems. The above notes all apply to Linux only,
>but may be useful on other platforms as well
It is much simpler just to put /usr/local/pgsql/lib into /etc/ld.so.conf and then run ldconfig.
06-Oct-2003 03:32
If you're trying to build with --with-imap and your uw-imap stuff is built SSLTYPE=nopwd then you will fail the "Checking if IMAP works" check if you don't also build with --with-imap-ssl
Another hour and a half of my life lost to find that one.
Steve
14-Aug-2002 10:06
[Editor's note: The reason why some general options for the "configure" scripts are not documented is that said script is part of the GNU autoconf tools, and as such its general options are documented elsewhere, e.g.: http://www.gnu.org/manual/autoconf/index.html and http://www.airs.com/ian/configure/. Some are also documented in the INSTALL file that comes with the source distribution.]
The --prefix=PREFIX configure option isn't mentioned here. It apparently defaults to /usr/local, and sets the position of the php includes and libs. (in PREFIX/include/php and PREFIX/lib/php)
15-Apr-2002 08:42
RE: Servlet support, I found that you need to configure --with-servlet=/usr/local/tomcat/common.
I found checking the configure script (always a good idea) that it looks for {dir_prefix}/lib/servlet.jar file, and this is found in the tomcat/common directory.
Hope this helps a bit!
14-Aug-2001 10:05
--enable-sigchild is only relevent to users of Oracle who are having <defunc> processes.
03-Nov-2000 08:27
If you are building with --with-pgsql=/some/dir, make sure that you still have libpq loaded up by ldconfig. I compiled and installed postgres from the tarball and then had to manually create the symlinks in /usr/local/lib. In particular, after you have built and installed postgres, you need to do the following (presuming you installed to /usr/local/pgsql):
# cd /usr/local/lib
# ln -s ../pgsql/lib/libpq.so.2.1 libpq.so.2.1
# ln -s ../pgsql/lib/libpq.so.2.1 libpq.so.2
# ln -s ../pgsql/lib/libpq.so.2.1 libpq.so
# ldconfig
/usr/local/lib needs to be listed in /etc/ld.so.conf, but it should already be there on most systems. The above notes all apply to Linux only, but may be useful on other platforms as well.
--sam
