如何生成网站Url–kohana3

Url::site()方法允许你为你的网站生成一个完全合格的url.

用法

echo Url::site(‘controller/action’);

/kohana/index.php/controller/action

如果你需要使用一个完全合格的域名,那么设置第二个参数是TRUE

echo url::site(‘controller/action’, TRUE)

http://kerkness.ca/kohana/index.php/controller/action

如果你要定义你的url的协议,你可以设置第二个属性为这个协议的字符串

echo Url::site(‘controller/action’, ‘ftp’);

ftp://kerkness.ca/kohana/index.php/controller/action

上面的示例假定你在application/bootstrap.php中使用了下列这样设置

Kohana::init(array(

‘base_url’   => ‘/kohana/’,

‘index_file’ => ‘index.php’,

));

chrome postman插件 API & HTTP 请求调试工具

Postman 是一个非常棒的Chrome扩展,提供功能强大的API & HTTP 请求调试。

它能够发送任何类型的HTTP requests (GET, HEAD, POST, PUT..),附带任何数量的参数+ headers。

QQ截图20160408174043

支持不同的认证机制(basic, digest, OAuth),接收到的响应语法高亮(HTML,JSON或XML)。

Postman 能够保留了历史的请求,这样我们就可以很容易地重新发送请求,有一个“集合”功能,用于存储所有请求相同的API/域。

这个扩展还有一些更多的功能,以简化测试和调试HTTP请求。是每个Web开发人员必须具备的。

 

kohana引导

Bootstrap

bootstrap的位置在application/bootstrap.php。它负责建立Kohana的环境和执行的主响应。它是被index.php包含进去的。

建立环境

bootstrap首先设置时区和语言环境,然后增加Kohana的autoloader使级联文件系统工作。你可以在这里添加你的应用程序需要的所有设置。

// Sample excerpt from bootstrap.php with comments trimmed down

// Set the default time zone.
date_default_timezone_set(‘America/Chicago’);

// Set the default locale.
setlocale(LC_ALL, ‘en_US.utf-8’);

// Enable the Kohana auto-loader.
spl_autoload_register(array(‘Kohana’, ‘auto_load’));

// Enable the Kohana auto-loader for unserialization.
ini_set(‘unserialize_callback_func’, ‘spl_autoload_call’);

Initialization and Configuration(初始化和配置)

kohana调用Kohana::init来初始化,并启用日志和配置读写器。

// Sample excerpt from bootstrap.php with comments trimmed down

Kohana::init(array(‘
base_url’ => ‘/kohana/’,
index_file => false,
));

// Attach the file writer to logging. Multiple writers are supported.
Kohana::$log->attach(new Kohana_Log_File(APPPATH.’logs’));

// Attach a file reader to config. Multiple readers are supported.
Kohana::$config->attach(new Kohana_Config_File);

您可以添加条件语句,使引导具有基于某些设置不同的值。例如,我们发现无论是现场检查$_ SERVER[‘HTTP_HOST’],并设置缓存,分析,等等。因此。这仅仅是一个例子,也有许多不同的方式来完成同样的事情。
// Excerpt from http://github.com/isaiahdw/kohanaphp.com/blob/f2afe8e28b/application/bootstrap.php
… [trimmed]

/**
* Set the environment status by the domain.
*/
if (strpos($_SERVER[‘HTTP_HOST’], ‘kohanaframework.org’) !== FALSE)
{
// We are live!
Kohana::$environment = Kohana::PRODUCTION;

// Turn off notices and strict errors
error_reporting(E_ALL ^ E_NOTICE ^ E_STRICT);
}

/**
* Initialize Kohana, setting the default options.
… [trimmed]
*/
Kohana::init(array(
‘base_url’ => Kohana::$environment === Kohana::PRODUCTION ? ‘/’ : ‘/kohanaframework.org/’,
‘caching’ => Kohana::$environment === Kohana::PRODUCTION,
‘profile’ => Kohana::$environment !== Kohana::PRODUCTION,
‘index_file’ => FALSE,
));

… [trimmed]

Modules(模块)

模块使用Kohana::modules()加载进来的。包含模块是可选的。阵列中的每个键应该是模块的名称,并且该值是所述路径模块,相对或绝对的。

// Example excerpt from bootstrap.php

Kohana::modules(array(
‘database’ => MODPATH.’database’,
‘orm’ => MODPATH.’orm’,
‘userguide’ => MODPATH.’userguide’,
));

Routes(路由)

路由是由Route::set() 定义的

// The default route that comes with Kohana 3
Route::set(‘default’, ‘(<controller>(/<action>(/<id>)))’)
->defaults(array(
‘controller’ => ‘Welcome’,
‘action’ => ‘index’,
));

kohana-messages

Kohana中有一个强大的基于密钥查询系统,让您可以定义系统消息。
使用Kohana::message()来获取信息的键值:
Kohana::message(‘forms’, ‘foobar’);
这个将会取到messages/forms.php文件的foobar键值
<?php
return array(
‘foobar’ => ‘Hello, world!’,
);

你也可以拿到子目录和子键值:
Kohana::message(‘forms/contact’, ‘foobar.bar’);
这个将会拿到messages/forms/contact.php 下的[foobar][bar]的键值
<?php
return array(
‘foobar’ => array(
‘bar’ => ‘Hello, world!’,
),
);

kohana工作流

1.项目从index.php入口开始

1.设置应用,模块和系统的路径(APPPATH,MODPATH,SYSPATH)
2.设置报错等级
3.如果存在install.php,将被加载
4.包含APPPATH/bootstrap.php

2.当我们在bootstrap.php中:

1.加载kohana类
2.用于设置error handling,caching(缓存)和logging日志的Kohana::init被调用
3.连接Kohana_Config readers 和 Kohana_Log writers
4.Kohana::modules 激活被请求的模块
模块路径被添加到级联文件系统
包含存在的每个模块的init.php文件
init.php可以执行额外的环境设置,包括添加路由。
5.多次调用Route::set 来定义 应用路由
6.调用Request::factory 开始请求进程
1.检查每个设置的路由直到找到匹配的为止
2.实例化Controller并传递请求给它
3.调用Controller::before 方法
4.调用生成请求响应的控制器方法
5.调用Controller::after 方法
当使用HMVC子请求时,上面的五步将多次重复

3.应用流程回到index.php

1.显示出主请求响应。

Memcached监听多个端口_同一台Windows机器中启动多个Memcached服务

下载Memcached服务器

假设你解压在”C:\Program Files\memcached\memcached.exe”

那么可以如下创建多个服务监听不同的端口啦

 

监听第一个端口:创建服务名为Memcached_11211,显示名也为Memcached_11211,监听的端口为11211

sc create “Memcached_11211” start= auto binPath= “C:\Program Files\memcached\memcached.exe -d runservice -m 32 -p 11211 -l 127.0.0.1” DisplayName= “Memcached_11211”

 

监听第二个端口:创建服务名为Memcached_11233,显示名也为Memcached_11233,监听的端口为11233

sc create “Memcached_11233” start= auto binPath= “C:\Program Files\memcached\memcached.exe -d runservice -m 32 -p 11233 -l 127.0.0.1” DisplayName= “Memcached_11233”

 

监听第三个端口:创建服务名为Memcached_11255,显示名也为Memcached_11255,监听的端口为11255

sc create “Memcached_11255” start= auto binPath= “C:\Program Files\memcached\memcached.exe -d runservice -m 32 -p 11255 -l 127.0.0.1” DisplayName= “Memcached_11255”

centos7编译安装php时: error: mcrypt.h not found. Please reinstall libmcrypt

这种情况一般是没有安装 libmcrypt-devel

centos7默认yum源没有libmcrypt-devel这个包,所以只能借助第三方源或者编译安装,这里用的是第三方源

下载并安装EPEL

# wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# rpm -ivh epel-release-latest-7.noarch.rpm
# yum repolist ##检查是否已添加至源列表

安装好第三方yum源后,

yum install libmcrypt-devel

vsftpd:500 OOPS: vsftpd: refusing to run with writable root inside chroot ()错误的解决方法

当我们限定了用户不能跳出其主目录之后,使用该用户登录FTP时往往会遇到这个错误:

500 OOPS: vsftpd: refusing to run with writable root inside chroot ()

这个问题发生在最新的这是由于下面的更新造成的

– Add stronger checks for the configuration error of running with a writeable root directory inside a chroot(). This may bite people who carelessly turned on chroot_local_user but such

从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。

要修复这个错误,可以用命令chmod a-w /home/user去除用户主目录的写权限,注意把目录替换成你自己的。或者你可以在vsftpd的配置文件中增加下列两项中的一项:

#vi /etc/vsftpd.conf

allow_writeable_chroot=YES

CentOS7安装设置FTP

一.安装FTP

1.检测是否安装了FTP:

[root@localhost ~]# rpm -q vsftpd
如果安装了会显示版本信息:
[root@localhost ~]# vsftpd-2.0.5-16.el5_5.1
否则显示:
[root@localhost ~]# package vsftpd is not installed

2. 安装FTP

[root@localhost ~]# yum install vsftpd

2.1 完成FTP安装后,将/ETC/VSFTPD/USER_LIST文件和/ETC/VSFTPD/FTPUSERS文件中的ROOT这一行用#注释掉

# root

2.2 执行以下命令

#setsebool -P ftpd_disable_trans=1
修改/etc/vsftpd/vsftpd.conf,在最后一行处添加local_root=/

2.3 重启FTP进程

#service vsftpd restart
**注:每次修改过ftp相关的配置文件,都需要重启ftp进程来生效。 ftp服务器就可以使用了。**

二. 配置FTP

1.创建一个账号为test的账户:

#mkdir /tmp/test //首先创建好目录
#adduser -d /tmp/test -g ftp -s /sbin/nologin test
//-s /sbin/nologin是让其不能登陆系统,-d是指定用户目录为/opt/srsman,即该账户只能登陆ftp,却不能用做登陆系统用。

1.1 为TEST设置密码

#passwd test
Changing password for user beinan.//接下来会出现让你设置新的密码
New password:
Retype new password:
passwd: all authentication tokens updated successfully

2. 限制用户目录,不得改变目录到上级

2.1 修改/ETC/VSFTPD/VSFTPD.CONF

将这两行
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd.chroot_list
注释去掉
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

2.2 新增一个文件: /ETC/VSFTPD/CHROOT_LIST

内容写需要限制的用户名:
test
重新启动vsftpd
#service vsftpd restart

3. 设置开机启动

(1)找到/etc/rc.local文件
(2)打开该文件,在最后一行添加:service vsftpd start
(3)保存,退出

4. 用FTP客户端快速连接