guiyumin 发布的文章

好,接着说怎么引入配置文件config.inc.php

这个文件是执行安装过程中,由程序生成的。所以有很多时候,安装会报错的一个原因,就是没有写入权限。

好,接下来,看这个配置文件干了什么。

首先是定义了一些全局变量,尤其是一些文件路径。比如:

/** 定义根目录 */
define('__TYPECHO_ROOT_DIR__', dirname(__FILE__));

/** 定义插件目录(相对路径) */
define('__TYPECHO_PLUGIN_DIR__', '/usr/plugins');

/** 定义模板目录(相对路径) */
define('__TYPECHO_THEME_DIR__', '/usr/themes');

/** 后台路径(相对路径) */
define('__TYPECHO_ADMIN_DIR__', '/admin/');

然后,再依据这些已经定义好的路径,来引入相应的文件(依赖),尤其是最关键的一个:

/** 载入API支持 */
require_once 'Typecho/Common.php';

/** 程序初始化 */
Typecho_Common::init();

初始化之后,会连接数据库。

那么,接下来有2个问题:

  • 根目录下,也没有Typecho这个目录啊,怎么引入的呢?
  • Typecho_Common::init()这行代码,到底初始化了哪些东西?

- 阅读剩余部分 -

上篇文章讲到,会引入一个config.inc.php文件,如果没有这个文件,就会开始执行安装步骤,install.php

关于怎么安装,这个事,暂且放一下。先看一下整体结构吧。
主要是这么几个目录和文件:

 - admin/
 - install/
 - usr/
 - var/
 - index.php
 - install.php

- 阅读剩余部分 -

首先,第一次看源码,当然是看index.php了。

那么,里面有这样的代码:

/** 初始化组件 */
Typecho_Widget::widget('Widget_Init');

/** 注册一个初始化插件 */
Typecho_Plugin::factory('index.php')->begin();

/** 开始路由分发 */
Typecho_Router::dispatch();

/** 注册一个结束插件 */
Typecho_Plugin::factory('index.php')->end();

- 阅读剩余部分 -

这个时候如果排除了数据库,Nginx以及其他的问题后,应该怀疑到是Cloudflare的问题,尤其是ssl的问题。

Cloudflare一共支持4种mode:

SSL/TLS encryption mode

  • Off
  • Flexible
  • Full
  • Full(strict)

看一下,这里,从上到下是逐渐严格的,所以可以试试Off,如果OK,说明网站没问题,而是ssl的问题。

至于SSL怎么解决,有空再聊。

在user的home目录下,建立一个文件.my.cnf,里面这样写:

[client]
user=username
password='mypassword'

然后就可以直接敲入mysql命令登录了,不用mysql -u username -p了。