发信人: dalasthunder(Dallas) 
整理人: dalasthunder(2002-07-30 15:52:21), 站内信件
 | 
 
 
(本文翻译自2002-07-26 PHP安装文档Apache部分,原文见:
 http://www.php.net/manual/en/install.apache.php
 包括部分用户加贴,但需要自行验证。
 注意!在Apache for Windows下安装之前需要先进行
 PHP安装手册 - Windows
 一文中所提到的步骤!)
 
 Server-Apache
 
 本节包括Apache下安装PHP(包括Unix和Windows)的说明和提示。
 
 Unix下的Apache中安装PHP的详细资料
 
 你可以根据完整配置选项列表在以下第10行中加入你选择的参数。这里把具体版本号
 略去了以确保本说明的正确性。你需要把下面的'xxx'替换成你得到的文件中确切的数值。
 
 例 3-5. PHP 4的Apache共享模块版本安装说明
 
 1.  gunzip apache_xxx.tar.gz
 2.  tar -xvf apache_xxx.tar
 3.  gunzip php-xxx.tar.gz
 4.  tar -xvf php-xxx.tar
 5.  cd apache_xxx
 6.  ./configure --prefix=/www --enable-module=so
 7.  make
 8.  make install
 9.  cd ../php-xxx
 10. ./configure --with-mysql --with-apxs=/www/bin/apxs
 11. make
 12. make install
 
   如果在安装之后你决定修改配置选项,那么只需重复以上最后三步。
   只须重新启动Apache就可以使新模块生效。不需要重新编译Apache。
 
 11. cp php.ini-dist /usr/local/lib/php.ini
 
   你可以编辑php.ini来设置PHP选项。如果你想把php.ini放在其他
   目录,在第10步加上以下选项:
   --with-config-file-path=/path
 
 12. 编辑 httpd.conf 或者 srm.conf 文件,确认以下两行存在并且
     没有被注释:
   
    AddType application/x-httpd-php .php
    LoadModule php4_module        libexec/libphp4.so
  
   你可以在这里使用任何后缀。.php 只是我们建议的一个。你甚至可以
   加上 .html,以及 .php3 以确保向下兼容。
  
   在 LoadModule 语句右边的路径必须指向你的PHP模块所在的路径。
   如果按照以上步骤进行那么上面的语句是正确的。
 
 13. 用你通常的过程启动Apache。(你必须完全停止Apache,再重新启动。
     而不是用 HUP 或者 USR1 信号使Apache重新加载。)
 
 根据你的Unix系统和Apache安装方法的不同,有很多方法停止和重启动Apache。
 以下是一些不同的Apache/Unix下重启动Apache的典型命令。你需要把
 /path/to/ 替换成你系统上的确切路径。
 
 1. 在一些 Linux 和 SysV 的变种下:
 /etc/rc.d/init.d/httpd restart
 
 2. 使用 apachectl 脚本:
 /path/to/apachectl stop
 /path/to/apachectl start
 
 3. httpdctl 和 httpsdctl (使用了 OpenSSL), 类似 apachectl:
 /path/to/httpsdctl stop
 /path/to/httpsdctl start
 
 4. 使用了 mod_ssl,或其他 SSL 服务器,你可能需要手工重启动:
 /path/to/apachectl stop
 /path/to/apachectl startssl
 
 apachectl和http(s)dctl程序所在的路径通常不固定。如果你的系统中有 locate
 或者 whereis 或者 which 命令,那么可以帮你找到这些控制程序。
 
 编译PHP for Apache的不同例子还有:
 
 ./configure --with-apxs --with-pgsql
 
 这个配置将生成在Apache的httpd.conf文件中用LoadModule加载的 libphp4.so 共享库。
 而PostgreSQL支持将嵌入到 libphp4.so 库中。
 
 ./configure --with-apxs --with-pgsql=shared
 
 这个配置将生成Apache的libphp4.so共享库,并且还生成 pgsql.so 共享库,可以在
 php.ini文件中用 extension 指令加载,或者在PHP程序中用 dl() 函数加载。
 
 ./configure --with-apache=/path/to/apache_source --with-pgsql
 
 这个配置将生成 libmodphp4.a 库,mod_php4.c 和一些相关的文件并且拷贝到Apache
 源程序目录中的 src/modules/php4 目录中。然后用
 --activate-module=src/modules/php4/libphp4.a
 编译Apache,Apache编译系统会生成 libphp4.a 并且将其静态地连接到 httpd 程序中。
 PostgreSQL支持也直接包括在这个 httpd 程序中了,因此最终结果是单一的一个包括了
 所有Apache和PHP支持的 httpd 可执行文件。
 
 ./configure --with-apache=/path/to/apache_source --with-pgsql=shared
 
 这个配置和上面一样 - 除了没有在最后的 httpd 可执行文件中包括 PostgreSQL的支持
 以及生成了一个 pgsql.so 共享库以外。该共享库可以在php.ini中或者用 dl()函数加载。
 
 当选择不同的方法编译PHP时,需要考虑每种方法的优势和缺点。用共享对象方式编译
 PHP意味着可以单独编译Apache,并且不用在添加或修改了PHP的时候重新编译所有程序。
 用内置方法编译PHP(静态方式)意味着PHP可以加载和运行得更快。更多信息见Apache的
 DSO支持网页。
 
   注意:Apache默认的httpd.conf文件中目前包括以下内容:
   
   User nobody
   Group "#-1"
   
   除非你把它修改成 "Group nogroup" 或者类似的("Group daemon"也很通用),PHP
   将不能打开文件。
 
   注意:确认在使用 --with-apxs=/path/to/apxs 时指向Apache安装后的目录
   中的apxs。绝对不能用Apache源程序中的apxs而要用安装后的apxs。
 
 Windows下在Apache 1.3.x中安装PHP
 
 有两种方式使PHP工作于Windows下的Apache 1.3.x。一种是CGI方式(php.exe),另一种
 是使用Apache模块DLL。不管哪种方式都需要停止Apache,编辑 srm.conf 或者 httpd.conf
 来配置Apache以加入PHP支持。
 
 值得在这里指出现在Windows下的SAPI模块更加稳定了,我们推荐使用模块方式,因为
 更加透明和安全。
 
 尽管有几种不同方法在Apache下配置PHP,但是对新手来说还是非常简单易用的。
 有关更多的httpd.conf配置指令请参考Apache文档。
 
 如果你按照PHP安装手册 - Windows一文中的“手工安装步骤”部分把PHP解压缩到了
 c:\php\ 目录下,那么需要加入以下三行到Apache配置文件中以CGI方式安装:
 
 ScriptAlias /php/ "c:/php/" 
 AddType application/x-httpd-php .php .phtml 
 Action application/x-httpd-php "/php/php.exe"
 
 注意上面第二行在原来的httpd.conf中就有的,不过被注释了。还有记住用你自己
 放置PHP的路径替代 c:/php/ 。
 
 警告
 在CGI方式下,你的服务器可能会受到几种攻击的影响。阅读CGI安全部分学习如何
 防止攻击。
 
 如果你想在Apache中用模块方式使用PHP,确认把 php4ts.dll 拷贝到 
 windows/system(Windows 9x/Me) 或者 winnt/system32(Windows NT/2000/XP)目录下,
 覆盖原来的文件。然后再Apache配置文件中加入以下两行:
 
 LoadModule php4_module c:/php/sapi/php4apache.dll 
 AddType application/x-httpd-php .php .phtml 
 
 修改了配置文件之后记住重新启动Apache,例如 NET STOP APACHE 然后再 NET START APACHE,
 如果你的Apache作为Windows的服务安装。或者用你通常使用的快捷方式。
 
   注意:在用Apache的Windows installer安装之后,你可能发现需要在
   httpd.conf文件中用AddModule指令定义mod_php4.c。在配置文件接近开头的地方
   有一些AddModule指令,在其中加入 AddModule mod_php4.c 一行。如果定义了
   ClearModuleList指令的话这一步尤其重要。如果不这么做可能会导致PHP不能
   被注册为Apache的模块。
 
 有两种方式使用源程序语法彩色显示特色,但是取决于你的安装方法。如果你配置了
 Apache的SAPI模块方式使用PHP,那么加入下面一行就可以使用本特色:
 AddType application/x-httpd-php-source .phps 
 
 如果你用CGI方式使用PHP,那你需要用 show_source() 函数。建立一个PHP文件,
 加入以下代码:<?php show_source("original_php_script.php"); ?>。用你想
 要显示源代码的文件名替换掉 original_php_script.php。
 
   注意:在Windows-Apache组合中,所有路径中的反斜线例如
   "c:\directory\file.ext"都必须转换成斜线,如 "c:/directory/file.ext"。
 
 用户添加贴
 Servers-Apache
 
 [email protected]
 24-Nov-2001 05:34
 Windows XP (Windows NT 5.1 build 2600)
 Apache/1.3.22 (Win32) PHP/4.0.6
 
 Apache错误日志中得到如下错误:
 "[error] Cannot remove module mod_php4.c: not found in module list"
 阅读了一小时手册后我尝试了官方的建议,在httpd.conf中的
 "ClearModuleList" 列表之后加入
 "AddModule mod_php4.c"
 结果不灵。
 
 不过我得到启示,在"ClearModuleList"之后加入以下三行:
 
 LoadModule php4_module c:/php4/sapi/php4apache.dll
 AddType application/x-httpd-php .php
 AddModule mod_php4.c
 
 最后测试代码运行通过了。
 <?php phpinfo();?>
 
 /Jorgen Hedlund
  
 [email protected]
 26-Feb-2002 07:54
  
 PHP 4.1.1附带的INSTALL文件非常好使(而且比这一页的说明更清楚)。
 但是有一小点,如果你用了附带 mod_ssl 的Apache,那你需要在
 httpd.conf中把LoadModule和AddModule两行放在<IfDefine SSL>标签
 的外面,否则如果你的Apache没有SSL(例如没有定义SSL),PHP不能运行。
 
 [email protected]
 01-Mar-2002 04:09
 如果你想在Apache 2.0.x下使用PHP,你需要这么做:
 
 首先,确认你再配置PHP时使用了 --with-apxs2 选项,例如
  --with-apxs2=/path/to/apache2/apxs
 你需要用这个替代  --with-apxs。其次,编辑httpd.conf时,
 用以下内容:
 
 <Files *.php>
 SetOutputFilter PHP
 SetInputFilter PHP
 </Files>
 
 替代AddType,放在你通常添加AddType的地方。
 此方法在 PHP 4.1.2 和 Apache 2.0.28 下通过
 
 [email protected]
 08-Apr-2002 09:23
 以上关于AddModule的安装中有一小点“注意”,这应该放在安装指南的正文部分
 而不只是一个“注意”。Apache如今默认安装时清除了所有的模块然后再一个接一个
 重新添加,所以在使用DSO时确认有以下几行:
 
 LoadModule php4_module c:/php/sapi/php4apache.dll 
 AddType application/x-httpd-php .php .php3 .inc
 
 然后在:
 
 ClearModuleList
 AddModule mod_so.c ...
 
 的后面加上:
 
 AddModule mod_php4.c
 
 很可惜 msi 安装时没有添加这些。
 
 [email protected]
 19-Apr-2002 02:45
 为了使PHP在Apache 2.0.35下运行,在Apache配置文件中我添加了
 以下两行:
 
 LoadModule php4_module /usr/libexec/libphp4.so
 AddType application/x-httpd-php .php
 
 不知道什么原因,编译PHP时没有把libphp4.so加入到Apache的路径中。
 我发现可以在Load Module中用完整的路径,这样就可以运行了。
 
 [email protected]
 24-Apr-2002 08:38
 Windows下怎样在Apache/2.0.35中安装PHP 4.2:
 
 - 按照通常的安装指南进行
 - 编辑Apache 2的 "httpd.conf" 文件
 - 加入以下两行:
 
 LoadModule php4_module c:\php\experimental\apache2filter.dll
 AddType application/x-httpd-php .php .phtml .php3
 
 [email protected]
 21-May-2002 07:06
 以上所有的解决方案在win2k server, apache 2.0.36和php4.2.1下都好使
 只除了一点,我要用:
 
 LoadModule php4_module c:\php\sapi\php4apache2.dll
 
 用反斜线代替路径中的斜线,否则Apache不启动。希望能帮到一些人。
 
 [email protected]
 22-May-2002 12:23?
 好使的 FREEBSD 4.5/APACHE 2.0.36 下安装 PHP 4.2.1 方法
 注意:你必须安装 GNU PTH  (从 ftp://ftp.gnu.org/gnu/pth/ 下载,或者
 从你的Freebsd光盘中安装)
 
 (APACHE)
 gunzip apache_xxx.tar.gz
 tar -xvf apache_xxx.tar
 cd apache_xxx
 ./configure --prefix=/var/www --enable-module=so  
 (修改 --prefix 为你想要的安装目录)
 
 make clean
 make
 make install
 
 (PHP)
 gunzip php-xxx.tar.gz
 tar -xvf php-xxx.tar
 cd ../php-xxx
 ./configure --with-mysql --with-tsrm-pth  --with-apxs2=/var/www/bin/apxs 
 make clean
 make
 make install
 
 此方法在我的系统下通过。
 
 [email protected]
 26-Jun-2002 02:23
 PHP 4.2.1 不支持 Apache 2.0.39,但是在开发版本中支持。你需要到:
 http://snaps.php.net/win32
 去看
 snapshot-STABLE.log
 文件,如果其中有一行:
 Building php4apache2 OK
 那么就下载该版本,此版本应该能够运行。
 
 [email protected]
 26-Jun-2002 05:11
 经过长时间寻找我终于找到一个PHP 4的SAPI模块可以在Win32的Apache 2.0.39下运行。
 如果你访问我的站点(建设中),在 downloads 部分。
 
 http://insodus.servehttp.com/Exosoft/
 
 或者直接点击下载:
 
 http://insodus.servehttp.com/Exosoft/_downloads/php4apache2.dll
 
 如果此文件有问题(不要问别的问题!)请给我发邮件:[email protected]
 
 [email protected]
 27-Jun-2002 03:25
 我在Suse Linux下安装Apache 2.0.39和PHP 4.2.1,结果不行。先是Apache说原先
 PHP 4.2.0的模块不兼容,然后在编译 PHP 4.2.1 时又出错。
 最终我搞定了。解决方法是:
 1. 按照INSTALL文件上的方法安装apache 2.0.39
 2. 修改文件 <PHP4.2.1source>/sapi/apache2filter/php_functions.c 中的
    第 93 行,把
     MODULE_MAGIC_AT_LEAST  改成
     AP_MODULE_MAGIC_AT_LEAST
 3. ./configure --with-mysql --with-apxs2=<path to apxs within Apache 2>
 4. make clean
 5. make (注意观察错误信息。原先在这里会出错,但是经过上述修改后不出错了)
 6. make install -i (-i 用来忽略错误。本来在安装到 install-sapi: 部分时会出错,
    但是忽略错误后就没问题了。)
 
 希望我帮到了一些可怜的家伙使他们没有浪费一整天。
 
                            Siderite
  
 [email protected]
 05-Jul-2002 01:40
 这里有一个最新的php4apache2.dll文件,我放在两台服务器上:
 
 http://www.ubbdev.com/columns/mattjacob/server/php4apache2.dll
 http://www.rocketweasel.com/files/php4apache2.dll
 
 你需要下载此文件,保存到你的 /php/sapi 目录下(覆盖原来的文件),
 然后修改httpd.conf文件。在我的环境下工作正常。
 
 LoadModule php4_module c:/php/sapi/php4apache2.dll
  
 [email protected]
 10-Jul-2002 05:10
 PHP 4.2.1 and Apache 2.0.39
 
 终于搞定了!我是这样做的:
 
 1) 下载和安装以下东东:
         snaps.php.net 下载最新稳定版 PHP (2002-7-10 9 AM 的版本)
         ftp.gnu.org/gnu/pth/ 下载 pth-1.4.1.tar.gz (可能有用)
 	
 2) 配置 apache:
         ./configure --prefix=/path/to/apache --with-module=so
 	make clean, make, make install
         (注意:这一步非必需,我只是想说清楚一些,我自己也没有做这一步。)
 
 3) 安装新的稳定版 PHP 4.2.1 并且做以下修改:
         在 'path/to/php/ext/standard 目录下修改文件 microtime.c,
         把第 31 行注释掉:
         #ifedf HAVE_SYS_RESOURCE_H 改成
         /* #ifedf HAVE_SYS_RESOURCE_H */
         还有第 33 行:
         #endif 改成
         /* #endif */
         我不知道问题出在哪里。我只知道第 32 行是需要的,所以这么干。
         前面那个 php_functions.c 的问题似乎已经搞好了,所以不用修改。
 
 4) 配置 php:
         make distclean
         ./configure --with-mysql --with-zlib --with-apxs2=/usr/local/apache/bin/apxs
         注意:/usr/local/apache 是我的Apache所在路径!你的路径可能是:
         /I/like/grandma/bin/apxs  (呵呵...)
         make clean, make 
         注意:在make的过程中我得到了6个有关RLIM_INFINITY被再次定义的警告。
         这个可能和我的 resource.h 版本不同有关,可能是我升级内核导致的。
         不用担心,如果你遇到了,只是警告而已。
 	make install
 
 5) 到 /usr/local/apache/conf 目录下编辑 httpd.conf
         确认有 'AddType application/x-httpd-php .php' 这一行
         居然没有!谣传会自动放上这一行,哼!
         还要确认有 'LoadModule php4_module modules/libphp4.so' 这一行
         确实有。嗯,很好。
         apachectl start 
         编辑一个 helloworld.php
         打开你的浏览器,搞定了!
         一边跳舞一边大叫“哈里路亚”!办公室的人好笑地望着你。
 	
 伙计,希望我节约了一些人一些时间!
  
 [email protected]
 15-Jul-2002 07:31
 在Apache2下尝试用SAPI方式使用PHP简直让我发疯,最后我加入:
    ScriptAlias /php/ "c:/php/"
    AddType application/x-httpd-php .php
    Action application/x-httpd-php "/php/php.exe"
 
 这样就可以了。
  
 [email protected]
 15-Jul-2002 11:49
 我编写了一个在Windows XP Pro下安装Apache 2.0.39, PHP 4.2.1和Tomcat 4.0.4
 (JSP 支持)的快速指南。如果你觉得有用请告诉我。
 
 http://mpcon.org/temp/how2install_apache_w_php_jsp_support.doc
  
 
 
 
  ---- ┏━━━━┯━━━━┓
 ┃孝敬父母│爱护兄弟┃
 ┠────┼────┨
 ┃体贴老婆│关心朋友┃
 ┗━━━━┷━━━━┛          | 
 
 
 |