After cloning the repository, let's add the Kohana core, a few modules and customize the installation:
1.
git submodule add git://github.com/kohana/core.git modules/system
git submodule add git://github.com/kohana/database.git modules/database
git submodule add git://github.com/kohana/cache.git modules/cache
git submodule add git://github.com/kohana/image.git modules/image
git submodule add git://github.com/kohana/pagination.git modules/pagination
2. Initialize the modules
$ git submodule init
$ git commit -m 'Added core kohana and initial submodules [cache,database,image,pagination]'
[master 1d5462d] Added core kohana and initial submodules [cache,database,image,pagination]
6 files changed, 20 insertions(+)
create mode 100644 .gitmodules
create mode 160000 modules/cache
create mode 160000 modules/database
create mode 160000 modules/image
create mode 160000 modules/pagination
create mode 160000 modules/system
3. Push these changes
$ git pull origin master
From mt:~/domains/git.portnumber53.com/html/menospior.com
* branch master -> FETCH_HEAD
Already up-to-date.
$ git push origin master
Counting objects: 5, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 663 bytes, done.
Total 4 (delta 0), reused 0 (delta 0)
To mt:~/domains/git.portnumber53.com/html/menospior.com.git
8bce6b1..1d5462d master -> master
We need some more files:
$ mkdir html
$ wget https://raw.github.com/kohana/kohana/3.2/master/index.php -O html/index.php
–2012-07-12 00:46:18– https://raw.github.com/kohana/kohana/3.2/master/index.php
Resolving raw.github.com (raw.github.com)… 207.97.227.243
Connecting to raw.github.com (raw.github.com)|207.97.227.243|:443… connected.
HTTP request sent, awaiting response… 200 OK
Length: 3292 (3.2K) [text/plain]
Saving to: `html/index.php'
100%[=========================================================================>] 3,292 –.-K/s in 0s
2012-07-12 00:46:19 (76.6 MB/s) – `html/index.php' saved [3292/3292]
$ wget https://raw.github.com/kohana/kohana/3.2/master/example.htaccess -O html/.htaccess
–2012-07-12 00:46:47– https://raw.github.com/kohana/kohana/3.2/master/example.htaccess
Resolving raw.github.com (raw.github.com)… 207.97.227.243
Connecting to raw.github.com (raw.github.com)|207.97.227.243|:443… connected.
HTTP request sent, awaiting response… 200 OK
Length: 517 [text/plain]
Saving to: `html/.htaccess'
100%[=========================================================================>] 517 –.-K/s in 0s
2012-07-12 00:46:48 (24.1 MB/s) – `html/.htaccess' saved [517/517]
$ mkdir -p modules/application
$ wget https://raw.github.com/kohana/kohana/3.2/master/application/bootstrap.php -O modules/application/bootstrap.php
–2012-07-12 00:47:32– https://raw.github.com/kohana/kohana/3.2/master/application/bootstrap.php
Resolving raw.github.com (raw.github.com)… 207.97.227.243
Connecting to raw.github.com (raw.github.com)|207.97.227.243|:443… connected.
HTTP request sent, awaiting response… 200 OK
Length: 3612 (3.5K) [text/plain]
Saving to: `modules/application/bootstrap.php'
100%[=========================================================================>] 3,612 –.-K/s in 0s
2012-07-12 00:47:33 (104 MB/s) – `modules/application/bootstrap.php' saved [3612/3612]
If you try accessing your site you should see an error:
———-
Warning: require(/bootstrap.php): failed to open stream: No such file or directory in /home/httpd/domains/menospior.dev/html/index.php on line 102
Fatal error: require(): Failed opening required '/bootstrap.php' (include_path='.:/php/library/php-redis:/usr/share/pear') in/home/httpd/domains/menospior.dev/html/index.php on line 102
———————
Let's adjust the environment:
Chage a few settings:
html/index.php
$application = '../modules/application';
$modules = '../modules';
$system = '../modues/system';
Customize some kohana settings:
../modules/application/bootstrap.php
date_default_timezone_set('America/Los_Angeles');
Kohana::init(array(
'base_url' => '/',
'index_file' => FALSE,
'cache_dir' => DOCROOT.'../cache'
));
Kohana::$log->attach(new Log_File(DOCROOT.'../logs'));
Now create the logs folder
$ mkdir logs
At this point you should have a 404 error as there's no controller:
HTTP_Exception_404 [ 404 ]: The requested URL / was not found on this server.
SYSPATH/classes/kohana/request/client/internal.php [ 87 ]
82
83 try
84 {
85 if ( ! class_exists($prefix.$controller))
86 {
87 throw new HTTP_Exception_404('The requested URL :uri was not found on this server.',
88 array(':uri' => $request->uri()));
89 }
90
91 // Load the controller using reflection
92 $class = new ReflectionClass($prefix.$controller);
-
SYSPATH/classes/kohana/request/client.php [ 64 ] » Kohana_Request_Client_Internal->execute_request(arguments)
-
SYSPATH/classes/kohana/request.php [ 1138 ] » Kohana_Request_Client->execute(arguments)
-
DOCROOT/index.php [ 109 ] » Kohana_Request->execute()
This is optional:
$ wget https://raw.github.com/kohana/kohana/3.2/master/install.php -O html/install.php
–2012-07-12 01:43:59– https://raw.github.com/kohana/kohana/3.2/master/install.php
Resolving raw.github.com (raw.github.com)… 207.97.227.243
Connecting to raw.github.com (raw.github.com)|207.97.227.243|:443… connected.
HTTP request sent, awaiting response… 200 OK
Length: 8411 (8.2K) [text/plain]
Saving to: `html/install.php'
100%[=========================================================================>] 8,411 –.-K/s in 0s
2012-07-12 01:44:00 (19.5 MB/s) – `html/install.php' saved [8411/8411]
the step above download the install.php file that can be used to test your environment. There are a few things wrong in the script, but it can tell you if you env has all the bells and whisles to use Kohana
Problems you may want to fix:
The iconv extension is not loaded.
Uncomment the line
extension=iconv.so
in your php.ini file and restart Apache
Kohana requires mcrypt for the Encrypt class.
Uncomment the line
extension=mcrypt.so
in your php.ini file and restart Apache
Kohana requires GD v2 for the Image class.
Uncomment the line
extension=gd.so
in your php.ini file and restart Apache
Kohana can use the http extension for the Request_Client_External class.
Install the pecl_http extension
# pacman -Sy php-pear autoconf
# pecl install pecl_http
/usr/lib/gcc/arm-unknown-linux-gnueabi/4.7.1/cc1: error while loading shared libraries: libppl.so.12: cannot open shared object file: No such file or directory
pecl/pecl_http can optionally use PHP extension "iconv"
downloading pecl_http-1.7.4.tgz …
Starting to download pecl_http-1.7.4.tgz (174,503 bytes)
……………………………….done: 174,503 bytes
71 source files, building
running: phpize
Configuring for:
PHP Api Version: 20100412
Zend Module Api No: 20100525
Zend Extension Api No: 220100525
/usr/lib/php/modules/http.so
You should add "extension=http.so" to php.ini
Fix install.php folder checks:
<tr>
<th>Cache Directory</th>
<?php if (is_dir(APPPATH) AND is_dir(DOCROOT.'../cache') AND is_writable(DOCROOT.'../cache')): ?>
<td class="pass"><?php echo DOCROOT.'../cache' ?></td>
<?php else: $failed = TRUE ?>
<td class="fail">The <code><?php echo DOCROOT.'../cache' ?></code> directory is not writable.</td>
<?php endif ?>
</tr>
<tr>
<th>Logs Directory</th>
<?php if (is_dir(APPPATH) AND is_dir(DOCROOT.'../logs') AND is_writable(DOCROOT.'../logs')): ?>
<td class="pass"><?php echo DOCROOT.'../logs' ?></td>
<?php else: $failed = TRUE ?>
<td class="fail">The <code><?php DOCROOT.'../logs' ?></code> directory is not writable.</td>
<?php endif ?>
</tr>