新客网
首页 | 新闻 | 系统·网络·服务器·安全 | 工具·办公 | 编程·数据库 | 图象·网页·运营 | 硬件·存储 | 专题教程 | 论坛·old
 → 当前位置:首页 > 教程 > 编程开发 > PHP教程 > 正文

构建可配置PHP应用程序的正确方式

XKER.COM   2006-11-20 11:01:00  来源:IBM  收藏本文

本文举例说明了创建可配置 PHP 应用程序的几种方法。文中也探讨了应用程序中理想的配置点,并在应用程序过分可配置和过分封闭之间寻求一个平衡点。

  如果计划让其他人或公司可以使用您的 PHP 应用程序,需要确保该程序是可配置的。至少,要允许用户以一种安全的方式设置数据库登录及密码,从而使其中的材料不会对外公开。

  本文展示了几种用于存储配置设置及编辑这些设置的技术。另外,文中也为哪些元素需要设为可配置以及如何避免陷入配置过度或者配置不足的困境提供了指导。

  使用 INI 文件进行配置

  PHP 内建了对配置文件的支持。这是通过 php.ini 文件这样的初始化文件(INI)机制实现的,在 php.ini 文件中定义了数据库连接超时或会话如何存储等常量。如果愿意的话,可以在这个 php.ini 文件中为应用程序定制配置。为了说明,我将下列代码行添加到 php.ini 文件中。

  myapptempdir=foo

  然后,我编写了一个小 PHP 脚本来读取这个配置项,如清单 1 所示。

  清单 1. ini1.php

<?php
function get_template_directory()
{
 $v = get_cfg_var( "myapptempdir" );
 return ( $v == null ) ? "tempdir" : $v;
}

echo( get_template_directory()."\n" );
?>

  当在命令行中运行这段代码时,得到如下结果:

% php ini1.php
foo
%

  太棒了。但为什么不能用标准的 INI 函数来获取 myapptempdir 配置项的值呢?我研究了一下,发现在大多数情况下,定制配置项不能使用这些方法来获取。然而,使用 get_cfg_var 函数却是可以访问的。

  为使这个方法更加简单,将对变量的访问封装在第二个函数中,该函数使用配置键名及一个缺省值作为参数,如下所示。

  清单 2. ini2.php

function get_ini_value( $n, $dv )
{
 $c = get_cfg_var( $n );
 return ( $c == null ) ? $dv : $c;
}

function get_template_directory()
{
 return get_ini_value( "myapptempdir", "tempdir" );
}

  这是对如何访问 INI 文件的一个很好的概括,所以,如果要使用一个不同的机制或将这个 INI 文件存储到其他位置,就不需要为更改大量的函数而大费周折。

  我不推荐使用 INI 文件作为应用程序的配置,这有两个理由。首先,虽然这样做较容易读取 INI 文件,但却几乎不可能安全地写 INI 文件。所以这样做只适合于只读配置项。第二,php.ini 文件在服务器的所有应用程序上共享,所以我认为特定于应用程序的配置项不应该写在该文件中。

  需要对 INI 文件了解什么呢?最重要的是如何重置 include 路径来添加配置项,如下所示。

  清单 3. ini3.php

<?php
echo( ini_get("include_path")."\n" );
ini_set("include_path",
ini_get("include_path").":./mylib" );
echo( ini_get("include_path")."\n" );
?>

  在本例中,我将我的本地 mylib 目录添加到了 include 路径中,所以能够从该目录中 require PHP 文件,而不需要将该路径添加到 require 语句中。

  PHP 中的配置

  通常对于在 INI 文件中存储配置条目的一个替代办法是使用一个简单的 PHP 脚本来保持数据。如下是一个样例。

  清单 4. config.php

<?php
# Specify the location of the temporary directory
#
$TEMPLATE_DIRECTORY = "tempdir";
?>

  使用该常量的代码如下所示。

  清单 5. php.php

<?php
require_once 'config.php';

function get_template_directory()
{
 global $TEMPLATE_DIRECTORY;
 return $TEMPLATE_DIRECTORY;
}

echo( get_template_directory()."\n" );
?>

  该代码首先包含配置文件(config.php),接着就可以直接使用这些常量了。

  使用这项技术有很多优势。首先,如果某些人仅仅浏览 config.php 文件,该页面是空白的。所以可以将 config.php 放到相同的文件中,并作为 Web 应用程序的根。第二,在任何编辑器中都可编辑,并且在一些编辑器中甚至具备语法着色及语法检查功能。

本新闻共4页,当前在第1页  1  2  3  4  

上一篇教程:跟我来学PHP5:session会话的使用和分析
下一篇教程:没有了
收藏本文】 【我要投稿】 【打印本文】 【论坛讨论】 【关闭窗口

相关文章
·跟我来学PHP5:session会话的使用和分析·虚拟主机中对PHP的特殊设置
·致初学者:PHP比ASP优秀的七个理由·PHP5中PDO的简单使用
·PHP教程专题·电子邮局PHP应用篇——POP3邮件的收取(二)
·电子邮局PHP应用篇——POP3邮件的收取(一) ·PHP的应用——聊天室开发完全手册(三)
·PHP的应用——聊天室开发完全手册(二) ·PHP的应用——聊天室开发完全手册(一)
·LINUX环境中用PHP构建网站:用递归函数写论坛·LINUX环境中用PHP构建网站:用户的登入认证
·LINUX环境中用PHP够建网站:新闻发布系统·LINUX环境中用PHP构建网站:搜索引擎的实现
·用 Oracle AS 10g 为PHP提供的一次性登录·PHP中英文混合排版中处理字符串常用的函数

学院文章搜索
  
推荐文章
·理解防火墙Log与端口扫描的
·独门绝技!防木马三招两式
·安全使用网上银行的七点建
·限制网上行为 从WorkWin限
·无线技术在Linux操作系统中
·其实很简单——防火墙设置
·端口·木马·安全·扫描应
·Windows远程控制完全指南
·十条经典的网站设计与优化
·asp全站防止注入的代码
阅读排行
·免费代理IP(每日更新)
·windows下如何修改右键菜单
·清除猖狂的Sxs.exe病毒
·DOS下对系统重新进行分区
·DOS常用命令
·编程过把瘾:自己动手写操
·DOS下常用的相关网络命令
·Fdisk分区详解
·国内数据恢复市场内幕揭秘
·超详细:用Macfee打造自己的
专题教程
·PHP教程专题
·MySQL 专题
·数据恢复指南 专题
·Web服务器专题
·DB2 9数据库专题
·ghost教程 专题
·局域网技术专题
·虚拟机专题
·CDN加速技术专题
·注册表教程专题
最新文章
·构建可配置PHP应用程序的正
·把危险挡在外面 路由安全
·漂亮的网页图片欣赏!
·口令攻击的主要方式及防护
·防备四大黑客程序杀手侵袭
·理解防火墙Log与端口扫描的
·常见局域网拓扑及网络系统
·路由器网络诊断步骤和故障
·解压WinRAR文件,你可得悠
·三种转黑白照片方法的比较
·跟我来学PHP5:session会话
·Vista启动画面:我很黑但是
·可浏览缩略图:WinZip 11正
·独门绝技!防木马三招两式
·用QQ WLM iNowShare随意共
设为首页 - 加入收藏 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
Copyright © 2003 - 2006 XKER Inc. All Rights Reserved
新客网 版权所有