環境構築
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