環境構築
Codeigniterの3.Xのマニュアルはこちら
$ cd $HOME $ mkdir -p work/app $ cd work/app $ export PATH=$PATH:$HOME/work/app/ $ curl -sS https://getcomposer.org/installer | php $ ./composer.phar require codeigniter/framework:3.* --dev $ ./composer.phar require monolog/monolog --dev $ curl -Lo phpunit.phar https://phar.phpunit.de/phpunit.phar $ chmod +x phpunit.phar
monologはPSR-3準拠のインターフェースを有したFile.Socket,Mail,DBなど、様々なサービスに対してログを出力するライブラリ。多数のハンドラが用意されていて、高度なログ取得機能が実装できる。
monologはRFC5424で定義されたすべて(8つ)のログレベルがサポートされている。
データベースにmysqlを使う場合(phpは7.0を想定)
$ sudo apt install mysql-server mysql-client mysql-common php7.0-mysql ※インストールの時にアカウントの設定を行うので控えておくこと
$ mkdir public $ cp -p ./vendor/codeigniter/framework/index.php ./public/ $ ( cd ./vendor/codeigniter/framework ; tar cpf - application ) | tar xpf - $ vi ./public/index.php $ diff public/index.php.org public/index.php 100c100 < $system_path = 'system'; --- > $system_path = '../vendor/codeigniter/framework/system'; 117c117 < $application_folder = 'application'; --- > $application_folder = '../application'; $ vi ./application/config/config.php $ diff ./application/config/config.php.org ./application/config/config.php 139c139 < $config['composer_autoload'] = FALSE; --- > $config['composer_autoload'] = realpath(APPPATH."../vendor/autoload.php"); $ ./bin/server.sh
mysqlを使うサンプル
データベースを作成する
$ mysql -u root -p
※ここでパスワード聞かれるが、インストール時に設定した値を入力
> show databases;
何も無い
> create database codeigniter default character set utf8;
> grant all privileges on codeigniter.* to USER@localhost indentified by PASSWORD;
※USERとPASSWORDは dababase.phpに設定する値と同じものにする。ここではUSERとPASSWORD共にmysqlと置き換えて入力しておいてください。
> show databases;
※できた
> use codeigniter
> create table testdb (
id int not null auto_increment,
name varchar(64),
email varchar(256),
primary key (id)) engine=MYISAM default charset=utf8;
> insert into testdb (name, email) values ('testuser1', 'testuser1@snowdrop.asia');
※登録する内容(testuser1)はお好きにどうぞ(*'▽')
> show tables;
> show columns from testdb;
> quit
codeigniterのデータベース接続設定をする
$ vi ./application/config/database.php
---
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'mysql',
'password' => 'mysql',
'database' => 'codeigniter',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => TRUE,
'db_debug' => TRUE,
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array()
);
---
※defaultがグループ名。$this->load->dababase('defult')のように指定できる。defaultは省略可。
※username/passwordはmysqlのgrantした時の値を入れる。データベース名はcreate databaseした時のデータベース名。ここでは codeigniterとして作成した。
データベースに接続してみるテスト
$ vi ./application/controllers/Sample.php
---
< ?php
class Sample extends CI_Controller {
public function index() {
$this->load->database();
$query = $this->db->query('SELECT name,email FROM testdb');
var_dump($query->result());
}
}
?>
---
※$this->load->database();はautoload.phpで既に設定していれば不要。(librariesのarrayにdatabaseがあるか)
$ ./bin/server.sh
※起動してたら止めて実行しなおす
ブラウザで以下の通りアクセスするとDBのdumpが出力されるはず!
http://localhost:8000/index.php/sample