返回介绍

16.6.7 项目安装模块讲解

发布于 2025-01-30 22:11:39 字数 4148 浏览 0 评论 0 收藏 0

安装功能说明

我们在电脑上安装软件的时候,点击下一步调整一些配置选项软件就安装成功了。

不需要非常高深的计算机技术即可让普通人完成安装。

我们在真正的商业型产品中也需要做完整的安装过程:

  1. 极为方便普通用户
  2. 看起来特别专业
  3. 操作起来简单提高效率

我们的 PHP 的论坛、商城、OA、微信平台都可以做这样的安装包,普通用户下载我们的安装包后。几步就可以开始使用我们的服务。

这样对用户和对开发人员都好。

安装相关基本概念

概念说明
安装目录通常在 install 目录下
安装锁通常为 install.lock,有这个文件就是安装过,无这个文件就是未安装
PHP 扩展模块判断mysqli 模块没有就无法操作数据库,我们则拒绝用户继续安装
目录权限判断我们会写入 install.lock 或者一些临时文件,若某些目录没有写入修改权限则无法安装成功
版本权限判断如果是 php4.x 版本想安装我们的应用,我们会提醒用户 PHP 版本太低无法安装
超级管理员初使的最高管理员,可以管理后台,方便用户管理,安装时即设置
初始数据库结构初始的数据库我们是将开发的数据库清空后,打开.sql 文件,分行执行,向数据库写入创建表的语句和初始信息

注:所有的代码文件实例请下载我们的安装包。查看 install 目录。

安装核心步骤说明

  1. 打开网站。打开网站若不存在 install.lock 文件则识为未安装
  2. 存在安装锁文件 install.lock 则禁止用户执行安装
  3. 展示安装协议
  4. 检测操作系统和 PHP 版本,是否版本准许。若版本不准许则不展示下一步。
  5. 判断权限是否具备相关目录的写入权限和 PHP 的图像、数据库模块权限,若不具备相关权限则不显示下一步。
  6. 输入服务器地址、数据库信息等配置文件,按照输入的信息连接数据库
  7. 输入管理员信息
  8. 将基本信息准备好,导入指定数据库数据表内容
  9. 导入成功,创建一个空文件 install.lock

install.lock 文件判断

在/common/common.php 文件中有这么一段:

//项目安装
if(!file_exists('install.lock'))
{
  header('location:install/index.php');
  exit;
}

若文件不存在则跳转至 header 目录。停止继续向下执行

/install/top.php 文件中有这一段:

if(file_exists('../install.lock')){
header('content-type:text/html; charset=utf-8;');
exit('网站已经被安装过了,如果需要重新安装网站,请删除 /install.lock 文件');
}

若存在 install.lock 文件禁止执行安装步骤。

判断版本

获得操作系统版本

function userOS(){

  //$user_OSagent = $_SERVER['HTTP_USER_AGENT'];
  $user_OSagent = PHP_OS;

  if($user_OSagent)
  {
    $visitor_os = $user_OSagent;

  } else {

    $visitor_os = '其它';

  }

  return $visitor_os;

}

获得 PHP 的版本号:

echo PHP_VERSION

判断目录权限

判断目录写入权限的自定义函数:

function iswriteable($file){
  if(is_dir($file)){
    $dir=$file;
    if($fp = fopen("$dir/test.txt", 'w')) {
      fclose($fp);
      unlink("$dir/test.txt");
      $writeable = 1;
    }else{
      $writeable = 0;
    }
  }else{
    if($fp = fopen($file, 'a+')) {
      fclose($fp);
      $writeable = 1;
    }else {
      $writeable = 0;
    }
  }
  return $writeable;
}

判断模块权限:

function_exists('mysqli_connect')

如果存在相关函数,则存在相关模块。

修改配置文件

相关代码参考本书:《8.11 修改置文件的实验》

数据库导入代码

将创建库的 SQL 语句准备好,创建数据库发送创建数据库的相关命令即可。

//执行数据库导入
include '../config/database.php';

//新建数据库
$link = mysqli_connect(DB_HOST, DB_USER, DB_PASS);
if(mysqli_get_server_info($link) > '4.1') {
    mysqli_query($link, "CREATE DATABASE IF NOT EXISTS `".DB_NAME."` DEFAULT CHARACTER SET ".DB_CHARSET);
} else {
    mysqli_query($link, "CREATE DATABASE IF NOT EXISTS `".DB_NAME."`");
}
if(mysqli_connect_errno($link)){
    exit('数据库不存在');
}
mysqli_close($link);

导入数据库打开 apple_bbs.sql 准备好的 SQL 文件,这个 SQL 文件中每一行的行尾以;NoAlike 结尾。

我们使用 explode 将 sql 文件切割成一个数组,循环数组的每一行完成数据的导入。

$sql=file_get_contents('apple_bbs.sql');
  $conn=mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
  if(mysqli_errno($conn)){

    exit(mysqli_error($conn));
  }
  mysqli_set_charset($conn, DB_CHARSET);

  $arr=explode(';NoAlike;',$sql);

  foreach($arr as $val){
    if(!empty($val))
    {
      $Nval = str_replace('bbs_', DB_PREFIX, $val);
      $result = mysqli_query($conn, $Nval);

      if($result){
          $sql = '<font color="green">数据库导入成功</font>';
      }else{
          $sql = '<font color="red">数据库导入失败</font>';
      }
    }
  }

  mysqli_close($conn);

注:所有的代码文件实例请下载我们的安装包。查看 install 目录。

欢迎加入我们共同创作本书、提出意见,让更多的初学者受益,让大学和工作迷茫的人,不再迷茫!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文