如何使用动态共享对象的模式来安装PHP


Posted in PHP onOctober 09, 2006

PHP 通常被安装在 Linux/Unix 操作系统上,并且搭配 Apache 服务器一起使用。在将 PHP 与 Apache 服务器一起安装的时候,你有三种不同的安装方式可以选择:静态模块,动态共享对象(Dynamic Shared Object, DSO)以及 CGI 程序执行文件。 

在这里我建议大家使用动态共享对象的模式来安装 PHP,这是因为这种安装方式为日后的维护与升级提供了极大的便利。假设你一开始安装 PHP 的时候,只加入了PHP 的数据库相关模块。几天以后你决定再加装 PHP 的编码功能相关模块,这时候你只需要在你的系统命令列输入 make clean 指令,然后输入新的 PHP 设定选项,然后再输入 make 与 make install 指令,接下来系统就会产生一个新的 PHP 动态共享对象,并且安装到 Apache 服务器所指定的适当目录位置去了。接下来你要做的只是重新激活 Apache 服务器就行了,你就不需要把 Apache 服务器整个重新编译过。 

下面几个基本步骤可以让你安装一套全新的 Apache 服务器,并且内含 PHP 动态加载模块: 

1.到 http://www.apache.org/dist/下载最新版本的 Apache 服务器原始码。 

2.将取得的档案复制到某个有意义的目录位置,例如 /usr/local/ 或者 /opt/ ,或者其它你觉得适当的目录位置。 

3.将取得的档案解压缩,解开以后你会得到一些 *.tar 档案。 

4.输入下面的指令将这些 *.tar 档案解开,并且将解开的档案放置到一个名叫 apache_[version] 的目录位置: 

tar -xvf apache_[version].tar  

5.输入 cd 指令将工作目录切换到 /usr/local/apache_[version](如果你在上一个步骤把 *.tar 档案解到其它不同目录,那么就切换到你所指定的目录去) 

6. 输入下面的指令准备编译程序,记得将下面指令里面的 [path] 部分代换成你自己的目录名称,例如 /usr/local/apache[version] (不要加上最后面的斜线!)。这个步骤所做的工作是激活 mod_so,如此一来 Apache服务器才可以使用动态共享对象。 

./configure --prefix=[path] --enable-module=so  

7.等到系统回到命令提示符号,输入 make,然后继续等候系统回到命令提示符号。 

8.输入 make install指令。 

此时编译程序将会产生最后需要用到的目录与档案,完成以后会再度回到命令提示符号。 

接下来可以开始安装 PHP 了: 

1.到 PHP 官方网站:http://www.php.net/downloads.php 下载最新版本的 PHP 原始程序代码。 

2.将取得的档案放置到某个有意义的目录位置,例如 /usr/local/ 或者 /opt/ ,或者其它你觉得适当的目录位置。 

3.将取得的档案解压缩,解开以后你会得到一些 *.tar 档案。 

4.输入下面的指令将这些 *.tar 档案解开,并且将解开的档案放置到一个名叫 php-[version] 的目录位置: 

tar -xvf php-[version]  

5.输入 cd 指令将工作目录切换到 /usr/local/php-[version](如果你在上一个步骤把 *.tar 档案解到其它不同目录,那么就切换到你所指定的目录去)。现在你就可以开始编译 PHP 动态共享对象了,真正必须的设定选项只有一个:--with-apxs(这是一个位在 Apache 服务器安装位置下的 bin 目录里面的一个档案)。不过在这里我建议把 PHP 的 MySQL 相关模块也一起加入。 

./configure --with-mysql=/[path to mysql] --with-apxs=/[path to apxs]  

6.等到系统回到命令提示符号,输入 make指令,然后继续等候系统回到命令提示符号再输入make install指令。 

接下来编译程序便会产生我们最后要使用的 PHP 动态共享对象,将它放置到Apache 用来放置动态共享对象的目录下,并且替你修改 Apache 服务器设定档 httpd.conf 的某些部分,最后系统会再度回到命令提示符号。等你回到命令提示符号以后,你必须回头去修改 httpd.conf 档案,里面有些设定必须修改: 

1.找出 ServerAdmin 那一行,把你的 email 信箱加上去,也就是把那一行修改成: ServerAdmin you@yourdomain.com 

2.找出 ServerName 那一行,并且将服务器名称设定好,例如:ServerName localhost 

3.找出下面这一段设定: 

# And for PHP 4.x, use:
#
#AddType application/x-httpd-php .php
#AddType application/x-httpd-php-source .phps 

你必须修改这里的设定值,把 AddType 那两行前面的#符号去掉(这里的#符号是代表批注),并且加入其它你想要配合 PHP 程序使用的扩展名,修改完以后这段设定看起来应该像是(请注意里面的 .php 和 .phtml 就是将来你可以用来分辨 PHP 程序的扩展名): 

# And for PHP 4.x, use:
#
AddType application/x-httpd-php .php .phtml 
AddType application/x-httpd-php-source .phps 

把 httpd.conf 存盘,输入 cd 指令回到上一层目录,然后输入下面的指令激活Apache 服务器: 

./bin/apachectl start  

如果激活过程没有任何错误讯息出现的话,接下来我们就可以开始测试看看刚刚安装好的 Apache 服务器和 PHP 模块是不是真的一切无误了。请建立一个档案,命名为 phpinfo.php,里面只要输入下面这行 PHP 程序代码就可以了: 

<? phpinfo() ?> 

将档案存盘,然后把它放置到 Apache 服务器的文件根目录(该目录名称是 htdocs)去。启动你的浏览器,在地址列输入 http://localhost/phpinfo.php,如果一切安装无误的话,你应该会看到一个很长的网页,上面显示了完整的 PHP系统设定信息,这表示我们已经顺利安装完成 Apache 服务器和 PHP 了! 

在初次安装完成以后,日后当你想要重新设定 PHP 的时候(比方说加入原本没有安装的 PHP 模块),你只需要在系统命令提示符号下输入 make clean指令,然后输入新的 ./configure设定指令,再输入 make和 make install指令,系统便会产生一个新的PHP动态共享对象。 接下来你只需要重新激活 Apache 服务器让它重新加载刚刚建立好的新模块即可。只需要几个简单的步骤便可以解决掉一堆烦人的问题了! 

PHP 相关文章推荐
强烈推荐:php.ini中文版(1)
Oct 09 PHP
set_include_path在win和linux下的区别
Jan 10 PHP
CodeIgniter php mvc框架 中国网站
May 26 PHP
队列在编程中的实际应用(php)
Sep 04 PHP
一个PHP缓存类代码(附详细说明)
Jun 09 PHP
php实现aes加密类分享
Feb 16 PHP
初识php MVC
Sep 10 PHP
PHP回溯法解决0-1背包问题实例分析
Mar 23 PHP
php解决和避免form表单重复提交的几种方法
Aug 31 PHP
PHP输出XML格式数据的方法总结
Feb 08 PHP
PHP 二级子目录(后台目录)设置二级域名
Mar 02 PHP
PHP共享内存使用与信号控制实例分析
May 09 PHP
PHP开发文件系统实例讲解
Oct 09 #PHP
PHP动态图像的创建
Oct 09 #PHP
两种php调用Java对象的方法
Oct 09 #PHP
提升PHP执行速度全攻略(上)
Oct 09 #PHP
PHP的一个完整SMTP类(解决邮件服务器需要验证时的问题)
Oct 09 #PHP
PHP5.0正式发布 不完全兼容PHP4 新增多项功能
Oct 09 #PHP
动态网站web开发 PHP、ASP还是ASP.NET
Oct 09 #PHP
You might like
php 方便水印和缩略图的图形类
2009/05/21 PHP
zend框架实现支持sql server的操作方法
2016/12/08 PHP
在laravel-admin中列表中禁止某行编辑、删除的方法
2019/10/03 PHP
浅析jquery的作用与优势
2013/12/02 Javascript
利用jquery写的左右轮播图特效
2014/02/12 Javascript
JS实现很实用的对联广告代码(可自适应高度)
2015/09/18 Javascript
jQuery控制DIV层实现由大到小,由远及近动画变化效果
2015/10/09 Javascript
js实现搜索框关键字智能匹配代码
2020/03/26 Javascript
JS和jQuery使用submit方法无法提交表单的原因分析及解决办法
2016/05/17 Javascript
JS实现获取当前URL和来源URL的方法
2016/08/24 Javascript
NodeJS远程代码执行
2016/08/28 NodeJs
jQuery事件对象总结
2016/10/17 Javascript
JavaScript版经典游戏之扫雷游戏完整示例【附demo源码下载】
2016/12/12 Javascript
浅谈Vue的加载顺序探讨
2017/10/25 Javascript
浅析node Async异步处理模块用例分析及常用方法介绍
2017/11/17 Javascript
简单谈谈CommonsChunkPlugin抽取公共模块
2017/12/31 Javascript
解决vue项目,npm run build后,报路径错的问题
2020/08/13 Javascript
Vue-cli4 配置 element-ui 按需引入操作
2020/09/11 Javascript
[03:57]2016完美“圣”典风云人物:rOtk专访
2016/12/09 DOTA
[01:39:42]Fnatic vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python将多个excel表格合并为一个表格
2021/02/22 Python
python取代netcat过程分析
2018/02/10 Python
Python中max函数用于二维列表的实例
2018/04/03 Python
详解python深浅拷贝区别
2019/06/24 Python
如何利用Python开发一个简单的猜数字游戏
2019/09/22 Python
Python使用jupyter notebook查看ipynb文件过程解析
2020/06/02 Python
Brydge英国:适用于Apple iPad和Microsoft Surface Pro的蓝牙键盘
2019/05/16 全球购物
德国药房apodiscounter中文官网:德国排名前三的网上药店
2019/06/03 全球购物
美国领先的机场停车聚合商:Airport Parking Reservations
2020/02/28 全球购物
幼儿园亲子活动方案
2014/01/29 职场文书
大学团日活动新闻稿
2014/09/10 职场文书
农村文化建设标语
2014/10/07 职场文书
2015年党风廉政承诺书
2015/01/22 职场文书
社区安全温馨提示语
2015/07/14 职场文书
员工考勤管理制度
2015/08/06 职场文书
WebRTC记录音视频流(web技术分享)
2022/02/24 Javascript