当我们的PHP网站架构完成后,想放到服务器上运行或共享给别人,首页我们必须打包程序与数据库,通过安装文件一步步来设置网站的所有信息。
这里就必须学会怎样制作安装包,PHP网站的安装程序主要就是把数据库的连接信息、数据库表的结构、数据的初始化、安装环境的检测、配置系统的参数进行一系列设置。
第一步:我们先新建一个install文件夹,install下层主要包括以下文件夹:
(1)template,主要放调用的模板页面,包括:confing.html、check.html、license.htm、 install.html。
(2)data, 写个数组,把数据库的结构信息写在里面并保存成data.php文件如以下:
$data[]=array( "CREATE TABLE IF NOT EXISTS '".Database."admin' ( 'id' mediumint(8) NOT NULL auto_increment, 'admin_name' varchar(60) NOT NULL, 'admin_password' varchar(60) NOT NULL, 'admin_purview' mediumint(8) NOT NULL, 'admin_admin' varchar(60) default NULL, 'admin_mail' varchar(60) default NULL, 'admin_tel' varchar(60) default NULL, PRIMARY KEY ('id') )
(3) init, 初始化文件,主要定义一系列的常量,包括数据库路径,文件存储路径,文件调用路径,环境变量值设置,客户端gpc的处理。
常量的定义一般我们用到define('常量名','初始化值’),环境变量值设置一般用到get_magic_quotes_gpc(),当然php6可能去掉了这个功能。客户端gpc的处理@extract($_POST); 意思是:处理$_post表单,把$_post客户端表单的变量名取出来。例如:
if (!get_magic_quotes_gpc()){ if (isset($_REQUEST)){ $_REQUEST = addslashes($_REQUEST); $_COOKIE = addslashes($_COOKIE); $_POST = addslashes($_POST); $_GET = addslashes($_GET); } } @extract($_POST); @extract($_COOKIE);
(4)一切初始化后紧接着就就调用模板文件,首页license.htm, 主要是显示网站的一些版权信息,网站内容与相关应用,这一步一般都直接跳过,然后就进入check.html, 检查客户端的环境支持,包括:网站文件夹的读写情况,GD或UTF-8的支持,MySql的支持,php版本,操作系统,服务器,服务器IP。
网站文件夹的读写:我们一般会定义一个数组,要可以读写的文件夹列出来,然后通过判断文件的可读写性,例如:
function check_dir_write($path){ if(!file_exists($path)){return false;} $file=$path.'write.txt'; if(!$fp=@fopen($file,'w')){return false;} if(!@fwrite($fp,'write')){return false;} fclose($fp); @unlink($file); return true; }
(5) 然后进入数据库配置文件的填写:包括:数据库主机,名称,用户名,密码,数据表前缀,管理员帐号,密码,管理邮箱。
填写完提交后,我们就把信息用define常量初始化,然后就判断数据库连接与打开情况,接着就把初始化常量写入confing.php缓存文件,最后一步就是调用data.php数据表结构文件,在install.html写入数据库连接,通过判断其连接情况,安装data数组下的所有数据表,完成!
代码参考:
global $localhost,$db_name,$db_user,$db_password,$db_pre,$admin,$password,$password2,$mail; $loclahost=empty($localhost)?'':trim($localhost); $db_name=empty($db_name)?'':trim($db_name); $db_user=empty($db_user)?'':trim($db_user); $db_password=empty($db_password)?'':trim($db_password); $db_pre=empty($db_pre)?'lps_':trim($db_pre); $str=" echo "
安装中,请稍后...
$msg=''; foreach($data as $k=>$v){ $msg.=empty($v[1])?"":"
安装【{$v[1]}】表
unset($data);
echo $msg;
$fp=fopen(DATA_PATH.'install.lock','w+');
@fwrite('beescms',$fp);
fclose($fp);
echo "
恭喜你,网站已经成功安装