[从typecho入坑PHP系列]install怎么进行安装准备?

install的作用

顾名思义,install的作用就是安装, 那如果有人已经安装过了呢?并不是所有人都会直接输入域名让服务器自动跳转到index.php(之所以看不到后缀,只看见域名是因为伪静态),如果有人可以输入域名/install.php是不是会再次安装呢?当然不是!

第一件事:确认

未安装时,入口文件index.php检查完未安装后,将页面跳转到install.php。
为了防止安装后通过域名/install.php重复安装,install.php会进行一次安装前确认,这一段代码在install.php的开头。


fetchRow($db->select()->from('table.options')->where('name = ?', 'installed'));
        if (empty($installed) || $installed['value'] == 1) {
            Typecho_Response::setStatus(404);
            exit;
        }
    } catch (Exception $e) {
        // do nothing
    }

endif;

此处运用到了if判断语句的一种替代语法。为了理解if判断语句,可以先去看看
[post cid=“27” /]
这里的关键在于


判断-执行-否则执行-结束判断
[scode type=“blue”]知识点

  • dirname()函数:PHP的内置函数,作用是取目标所在目录。
  • __FILE__是PHP中的魔术常量,返回当前文件的绝对路径。
  • 两者的区别在于后者会将当前文件的文件名加上,具体参见(__FILE__与dirname(FILE)与dirname(dirname(FILE)))。
  • 小数点.在PHP中的作用为连接符 。
  • file_exists()函数用于判断文件是否存在。
    [/scode]
    假设此时typecho的根目录为C://www/

未安装

此时C://www/中没有config.inc.php
那么使用__FILE__结果为C://www/install.php
使用dirname(FILE)结果为C://www
使用.连接C://www和/config.inc.php得到:C://www/config.inc.php
那么使用file_exists()函数判断是否存在结果为否,!进行否定结果为正确!
if(正确)执行安装代码!

已安装

此时C://www/中有config.inc.php,根据上面的分析,此时if(错误),执行else以后的代码!

你可能感兴趣的:(typecho)