6. mod_php 及其先决条件

6.1. 什么是 mod_php

 

PHP 是一种服务器端、跨平台的、HTML 内嵌脚本语言。

起初它只是一个简单的留言簿处理器,之后不断发展壮大。自版本 3 以来,它已成为真正强大的 Web 开发语言

 
--www.php.net 

自版本 4 以来,PHP 变得足够强大和健壮,可以用于企业级 Web 应用程序。它功能强大,几乎原生支持所有重要的数据库,并通过 ODBC (开放数据库互连) 支持其他数据库。在相同的硬件上,它比 Windows 系统上的 ASP 快几倍。

还有其他扩展可用,例如 APC (Alternative PHP Cache,可选 PHP 缓存),它可以将处理速度提高约 50-400%(取决于您编写的 php 代码)

6.2. 先决条件

根据您的需求,需要首先安装一些软件。根据本文档,已经安装的一个软件是 MySQL,因为它被 mod_auth_mysql 所需。

6.2.1. IMAP 客户端

6.2.1.1. 什么是 IMAP 客户端

IMAP 代表 “Internet Mail Application Protocol”(互联网邮件应用程序协议),是 POP (Post Office Protocol,邮局协议) 协议的替代品。它允许将所有邮件保存在服务器上的不同文件夹中,这些文件夹(应该)被备份 - 永远不会再因为本地硬盘崩溃而丢失重要的电子邮件

6.2.2. 下载源代码

原始站点

原始站点: http://www.washington.edu/imap/

6.2.3. 构建和安装

cd /usr/local

tar -xvfz imap.tar.Z

cd imap

make slx SSLTYPE=nopwd (1)

(1)
使用参数SSLTYPE=unix您可以定义是否需要 SSL 支持。省略表示不需要 SSL 支持。

Tip要下载的文件名
 

imap.tar.Z 通常是指向最新版本的符号链接,今天它链接到 imap-2001a.tar.Z

6.2.4. PostgreSQL

6.2.4.1. 什么是 PostgreSQL

PostgreSQL 是一个非常强大且快速的数据库

像 MySQL 一样,非常适合 Web 应用程序。从我的角度来看,操作起来不如 MySQL 那么舒适。如果您的 Web 应用程序主要执行写入操作,或者您需要经过验证的事务功能,那么 PostgreSQL 是您的朋友

6.2.4.2. 下载源代码

原始站点: https://postgresql.ac.cn (选择离您较近的镜像站点)

6.2.4.3. 构建和安装

cd /usr/local

tar -xvzf postgresql-7.3.2.tar.gz

cd postgresql-7.3.2

./configure \
--with-perl \
--enable-odbc \
--with-unixodbc  \
--with-pam \
--with-openssl \


make
make install

echo /usr/local/pgsql/lib >> /etc/ld.so.conf

ldconfig

6.2.5. Sablotron

6.2.5.1. 什么是 Sablotron

 

Sablotron 是一个快速、紧凑且可移植的 XML 工具包,实现了 XSLT 1.0、DOM Level2 和 XPath 1.0。Sablotron 是一个开放项目;鼓励其他用户和开发人员使用它或帮助我们测试或改进它。该项目的目标是创建一个轻量级、可靠且快速的 XML 库处理器,符合 W3C 规范,可公开使用,并可用作多平台 XML 应用程序的基础。

 
--http://www.gingerall.com/charlie/ga/xml/p_sab.xml 

6.2.5.3. 构建和安装

tar -xvzf Sablot-0.97.tar.gz
cd Sablot-0.97

./configure
make
make install

ldconfig

6.2.6. pdflib

6.2.6.1. 什么是 pdflib

 

PDFlib:一个用于动态生成 PDF 的库。如果您想在服务器上生成 PDF、转换文本和图形,或者在您自己的产品中实现 PDF 输出,PDFlib 是首要的软件组件。

 
--www.pdflib.com 

从作者的角度来看

Caution这是一个商业产品
 

PDFLIB 是一个商业产品。请仔细阅读许可协议,以确定您是否需要商业许可证。

6.2.6.2. 下载源代码

原始站点: http://www.pdflib.com/pdflib/download/pdflib-4.0.3.tar.gz

6.2.6.3. 构建和安装

cd /usr/local/
tar -xvzf pdflib-4.0.3.tar.gz

cd pdflib-4.0.3

./configure --enable-shared-pdflib --enable-cxx

make
make install

ldconfig

6.2.7. gettext

6.2.7.1. 什么是 gettext

gettext 是一个用于软件 i18n (国际化,"I", 18 个字符和 "n") 的库,php 需要它。

6.2.7.2. 下载源代码

原始站点: ftp://ftp.gnu.org/gnu/gettext (选择离您较近的镜像站点)

6.2.7.3. 构建和安装

cd /usr/local

tar -xvzf gettext-0.11.2.tar.gz

cd gettext-0.11.2

./configure

make
make check
make install

ldconfig

6.2.8. zlib

6.2.8.1. 什么是 zlib

zlib 是一个无损数据压缩库,几乎可以在任何计算机硬件和操作系统上使用

6.2.8.2. 下载源代码

原始站点: ftp://ftp.info-zip.org/pub/infozip/zlib/zlib-1.1.4.tar.gz (选择离您较近的镜像站点)

6.2.8.3. 构建和安装

cd /usr/local

tar -xvzf zlib-1.1.4.tar.gz

cd zlib-1.1.4/

./configure

make
make test
make install

ldconfig

6.3. 构建和安装 PHP4

cd /usr/local

tar -xvzf php-4.3.0.tar.gz

cd php-4.3.0

export LDFLAGS=-lstdc++

./configure \
--with-apxs=/usr/local/apache/bin/apxs \
--with-mysql=/usr/local/mysql \
--with-pgsql=/usr/local/pgsql \
--enable-track-vars \
--with-openssl=/usr/local/ssl \
--with-imap=/usr/local/imap \
--with-gd --with-ldap \
--enable-ftp \
--enable-sysvsem \
--enable-sysvshm \
--enable-sockets \
--with-pdflib=/usr/local \
--with-gettext \
--with-mm=/usr/local/mm-1.1.3 \
--with-jpeg-dir=/usr/lib \
--with-zlib-dir=/usr/local \
--enable-wddx \
--with-mcrypt \
--with-mhash \
--with-mcal=/usr \
--enable-exif \
--enable-xslt \
--with-xslt-sablot=/usr/local \
--with-dom \
--with-dom-xslt \

编辑Makefile并添加-lstdc++到变量EXTRA_LIBS。这目前仅在使用 Sablotron 版本 0.9.7 时需要。

make
make install

在通过 axps 安装后,您的 httpd.conf 将被修改。它现在应该看起来像这样

<IfDefine SSL>
LoadModule ssl_module         libexec/libssl.so
LoadModule php4_module        libexec/libphp4.so
</IfDefine>

如果您使用 mod_ssl 编译了 Apache,那么 php 模块将仅在启动带有 ssl 的 Apache 时加载 (apachectl startssl)。如果您将在没有 ssl 支持的情况下启动 Apache(但像本文档中描述的那样编译),您需要更改此设置

<IfDefine SSL>
LoadModule ssl_module         libexec/libssl.so
</IfDefine>
LoadModule php4_module        libexec/libphp4.so

复制示例php.ini-dist/usr/local/lib/php.ini

cp /usr/local/php-4.3.0/php.ini-dist /usr/local/lib/php.ini

取消注释(删除行首的 #)以下行,在/usr/local/apache/conf/httpd.conf

Apache 1.3.27 默认的 httpd.conf 缺少这些条目。您必须添加它们而不是取消注释

AddType application/x-httpd-php .php
AddType application/x-httpd-php .phtml
AddType application/x-httpd-php .php3

# If you want to display PHP source 

AddType application/x-httpd-php-source .phps (1)

(1)
只有当您想在浏览器中显示源代码时,才需要此行。此类文件的文件扩展名应为 phps。/para>

Tipregister_globals
 

自 PHP 版本 4.2.1 起,“register_globals” 设置为 OFF。这可能会给您带来运行不使用 $HTTP_GET_VARS 方法的 PHP 代码的问题。要启用 register_globals,请编辑您的/usr/local/lib/php.ini:

register_globals = On

请务必确保,如果您编写新软件,请使用新方法。对旧方法的支持迟早会取消

通过发出以下命令重启 Apache

/usr/local/apache/bin/apachectl restart