linux/raspberry piでwebアプリの作成」カテゴリーアーカイブ

LAMP+CAKEPHPでWEBアプリを作成します。

cakephp環境構築1

webアプリをcakephpで作成するにあたって開発環境の構築と、動作テストを行います。

まず、インストールから。
ここまでの設定で不足しているものがあるので
sudo apt-get install php5-intl
sudo apt-get install php5-sqlite

でインストールします。

wwwディレクトリに移動
$cd /var/www
$sudo curl -s https://getcomposer.org/installer | sudo php
$sudo mv composer.phar /usr/local/sbin/composer
test_appプロジェクトを作成します。
$cd html
$sudo mkdir test_app
rootでは作成できないので、htmlディレクトリのオーナをユーザにします。
$sudo chown [user] test__app
下記コマンドでプロジェクト作成します。
$ composer create-project –prefer-dist cakephp/app ./

確認
ブラウザからhttp://サーバアドレス/test_appにアクセスします。
次のような画面が表示されます。



データベースの作成していないので、エラーがいろいろ表示がされることもありますが、ここではOKです。
<広告 ※このページの記載内容とは関係ありません。>

PHPフレームワーク CakePHP 3入門 [ 掌田津耶乃 ]

価格:3,024円
(2017/11/24 16:18時点)

cakephp環境構築2 データベース作成、BAKE

1 phppgadminでデータベースを作成します。
サーバを選択し、「データベース」を作成するをクリックします。
名前をtest_appとして「作成」をクリックします。
その他の項目は問題があれば後で変更することにします。

2 テーブルを作成します。
作成した、test_appのテーブルを選択し、「テーブルを作成する」をクリックします。
下のテーブル構造のとおりテーブルを作成します。
postgresにはautoinclimentが無いので、idはselialを選択します。

CREATE TABLE users (
id integer NOT NULL,
username character varying(50) NOT NULL,
password character varying(255),
role character varying(20),
created timestamp with time zone,
modified timestamp with time zone
);
作成時idにinteger等を選択してしまった場合、後からselealは選択できないので、シーケンスを作成します。
test_appのシーケンスを選択し、「シーケンスを作成する」をクリックします。
CREATE SEQUENCE users_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
※「postgreSQLでautoincrimentを実装する(https://norm-nois.com/blog/archives/555)」を参考にしました。
3 cakephp DB設定
/test_app/config/app.php
下記セクシクションを書き換えます
‘Datasources’ => [
‘default’ => [
‘className’ => ‘Cake\Database\Connection’,
‘driver’ => ‘Cake\Database\Driver\Postgres’,//postgresql
‘persistent’ => false,
‘host’ => ‘localhost’,
/**
* CakePHP will use the default DB port based on the driver selected
* MySQL on MAMP uses port 8889, MAMP users will want to uncomment
* the following line and set the port accordingly
*/
//’port’ => ‘non_standard_port_number’,
‘username’ => ‘cakeuser’,
‘password’ => ‘*********’,//パスワード
‘database’ => ‘test_app’,
‘encoding’ => ‘utf8’,
‘timezone’ => ‘Asia/Tokyo’,
‘flags’ => [],
‘cacheMetadata’ => true,
‘log’ => false,

4 bakeします。
$cd /var/www/html/test_app/bin/
$./cake bake all users

テーブルのアクセス権がないと
Your database does not have any table
などが表示されます。

ブラウザから、http://(server_ip)/test_app/usersでアクセスします。
New Userで追加など動作を確認します。
以下は動作イメージです。

<広告 (注)以下の書籍は、このページの記載内容とは関係ありません。>

PostgreSQL徹底入門第3版 [ 笠原辰仁 ]

価格:3,542円
(2017/11/24 16:27時点)

PostgreSQL: Up and RunningA Practical Guide to the Advanced Open Source Database【電子書籍】[ Regina O. Obe ]

価格:3,024円
(2017/11/24 16:26時点)

cakephp3のタイムゾーンの設定

cakephp3でcreatedやmodifiedの時間が9時間ずれる場合等があるのでタイムゾーンを設定します。

/config/app.phpの値の変更
/config/app.php の「Datasources」にある「timezone」の値を変更します。
デフォルトでは「UTC」になっていますので、これを「Asia/Tokyo」もしくは「+09:00」にします。

$ vi config/app.php
PHP

‘Datasources’ => [
‘default’ => [
‘className’ => ‘Cake\Database\Connection’,
‘driver’ => ‘Cake\Database\Driver\Mysql’,
‘persistent’ => false,
‘host’ => ‘localhost’,
‘username’ => ‘root’,
‘password’ => ‘pass’,
‘database’ => ‘cake3’,
‘encoding’ => ‘utf8’,
// ‘timezone’ => ‘UTC’,
‘timezone’ => ‘Asia/Tokyo’,
‘flags’ => [],
‘cacheMetadata’ => true,
‘log’ => false,
]

‘App’ => [
‘namespace’ => ‘App’,
‘encoding’ => env(‘APP_ENCODING’, ‘UTF-8’),
‘defaultLocale’ => env(‘APP_DEFAULT_LOCALE’,’ja_JP’),//<—変更しないと日時の表示が日本風にならない ‘base’ => false,
‘dir’ => ‘src’,
‘webroot’ => ‘webroot’,
‘wwwRoot’ => WWW_ROOT,
// ‘baseUrl’ => env(‘SCRIPT_NAME’),
‘fullBaseUrl’ => false,
‘imageBaseUrl’ => ‘img/’,
‘cssBaseUrl’ => ‘css/’,
‘jsBaseUrl’ => ‘js/’,
‘paths’ => [
‘plugins’ => [ROOT . DS . ‘plugins’ . DS],
‘templates’ => [APP . ‘Template’ . DS],
‘locales’ => [APP . ‘Locale’ . DS],
],
],
/config/bootstrap.phpの値の変更

/config/bootstrap.php の「date_default_timezone_set」の値を変更します。
こちらもデフォルトでは「UTC」になっていますので、これを「Asia/Tokyo」にします。

<広告 (注)以下の書籍は、このページの記載内容とは関係ありません。>

初めてのPHP [ David Sklar ]

価格:3,240円
(2017/11/24 17:00時点)