phpMyAdminインストール
cakePHP3のお勉強でDBを確認するためインストール 以下のサイトを参考
/rootの直下にとりあえずダウンロード svn checkout https://phpmyadmin.svn.sourceforge.net/svnroot/phpmyadmin/tags/STABLE/phpMyAdmin phpmyadmin
リビジョン 13465 をチェックアウトしました。 と表示される。
ファイルを/var/wwwに移動
mv phpmyadmin /var/www
php-mysqlインストール 以下のエラーがでてしまいストップ
#rpm -q php-mysql パッケージ php-mysql はインストールされていません。 #yum -y install php-mysql Loaded plugins: fastestmirror, security Determining fastest mirrors * base: ftp.riken.jp * extras: ftp.riken.jp * remi-safe: repo1.sea.innoscale.net * updates: ftp.riken.jp base | 3.7 kB 00:00 extras | 3.4 kB 00:00 mysql-connectors-community | 2.5 kB 00:00 mysql-tools-community | 2.5 kB 00:00 mysql56-community | 2.5 kB 00:00 remi-safe | 2.9 kB 00:00 remi-safe/primary_db | 730 kB 00:00 updates | 3.4 kB 00:00 updates/primary_db | 1.4 MB 00:00 Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package php-mysql.x86_64 0:5.3.3-49.el6 will be installed --> Processing Dependency: php-common(x86-64) = 5.3.3-49.el6 for package: php-mysql-5.3.3-49.el6.x86_64 --> Finished Dependency Resolution Error: Package: php-mysql-5.3.3-49.el6.x86_64 (base) Requires: php-common(x86-64) = 5.3.3-49.el6 Installed: php-common-5.6.30-1.el6.remi.x86_64 (@remi-php56) php-common(x86-64) = 5.6.30-1.el6.remi Available: php-common-5.3.3-49.el6.x86_64 (base) php-common(x86-64) = 5.3.3-49.el6 You could try using --skip-broken to work around the problem You could try running: rpm -Va --nofiles --nodigest
[root@XXXX phpmyadmin]# yum -y install expect Loaded plugins: fastestmirror, security Loading mirror speeds from cached hostfile * base: ftp.riken.jp * extras: ftp.riken.jp * remi-safe: repo1.sea.innoscale.net * updates: ftp.riken.jp Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package expect.x86_64 0:5.44.1.15-5.el6_4 will be installed --> Finished Dependency Resolution Dependencies Resolved ======================================================================================================== Package Arch Version Repository Size ======================================================================================================== Installing: expect x86_64 5.44.1.15-5.el6_4 base 256 k Transaction Summary ======================================================================================================== Install 1 Package(s) Total download size: 256 k Installed size: 553 k Downloading Packages: expect-5.44.1.15-5.el6_4.x86_64.rpm | 256 kB 00:00 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : expect-5.44.1.15-5.el6_4.x86_64 1/1 Verifying : expect-5.44.1.15-5.el6_4.x86_64 1/1 Installed: expect.x86_64 0:5.44.1.15-5.el6_4 Complete!
インストール
[root@www phpmyadmin]# mkpasswd -l 46 qcepdfVtgqr2eGgwlcobfhjoqkwwx>imbevsbnti3cnarr
phpMyAdmin設定 Apache設定 を実施し http://サーバー名/phpmyadmin/ へアクセス
You don’t have permission to access /phpMyAdmin/ on this server.
アクセスできない 以下を参考に名前を変更
https://www.deep-deep.jp/blog_engineer/archives/1996
ログイン画面が表示された
MySQLのユーザでログインできることを確認
mcryptは、以下の記事を参考にしたら解消した qiita.com
その他
「CakePHP3でWebアプリ開発」の記事見てお勉強
CakePHP3でWebアプリ開発
以下の記事を見ながら実際にWebアプリを作ってみる。
現時点で作ったこと
- ドットインストールのCakePHP3入門で何となく作り方のイメージが出来た
http://dotinstall.com/lessons/basic_cakephp_v2
認証機能の実装
記事のとおりに作成していく
1. userテーブルを作成
mysql> CREATE TABLE users ( -> id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, -> username VARCHAR(50), -> password VARCHAR(255), -> role VARCHAR(20), -> created DATETIME DEFAULT NULL, -> modified DATETIME DEFAULT NULL -> ); Query OK, 0 rows affected (0.09 sec) mysql>
2. Model src/Model/Table/UsersTable.phpを作成する。
<?php namespace App\Model\Table; use Cake\ORM\Table; use Cake\Validation\Validator; class UsersTable extends Table { public function validationDefault(Validator $validator) { return $validator ->notEmpty('username', 'A username is required') ->notEmpty('password', 'A password is required') ->notEmpty('role', 'A role is required') ->add('role', 'inList', [ 'rule' => ['inList', ['admin', 'user']], 'message' => 'Please enter a valid role' ]); } }
3. src/Model/Entity/User.phpを作成
<?php namespace App\Model\Entity; use Cake\Auth\DefaultPasswordHasher; use Cake\ORM\Entity; class User extends Entity { protected $_accessible = [ '*' => true, 'id' => false ]; protected function _setPassword($password) { return (new DefaultPasswordHasher)->hash($password); } }
4. Controller src/Controller/AppController.phpを修正
認証機能を有効にする 以下の記事だとコメントが書いてあるので読んでみた jmatsuzaki.com
/** * Initialization hook method. * * Use this method to add common initialization code like loading components. * * e.g. `$this->loadComponent('Security');` * * @return void */ public function initialize() { parent::initialize(); $this->viewBuilder()->layout('my_layout'); $this->loadComponent('RequestHandler'); $this->loadComponent('Flash'); // 20170612 ADD 認証機能を有効 $this->loadComponent('Auth', [ 'authorize' => ['Controller'], 'loginRedirect' => [ 'controller' => 'Users', 'action' => 'index' ], 'logoutRedirect' => [ 'controller' => 'Users', 'action' => 'login' ] ]); /* * Enable the following components for recommended CakePHP security settings. * see http://book.cakephp.org/3.0/en/controllers/components/security.html */ //$this->loadComponent('Security'); //$this->loadComponent('Csrf'); }
5. UsersController src/Controller/UsersController.phpを作成
<?php namespace App\Controller; use App\Controller\AppController; use Cake\Event\Event; class UsersController extends AppController { public function beforeFilter(Event $event) { parent::beforeFilter($event); $this->Auth->allow(['add', 'logout']); } public function login() { if ($this->request->is('post')) { $user = $this->Auth->identify(); if ($user) { $this->Auth->setUser($user); return $this->redirect($this->Auth->redirectUrl()); } $this->Flash->error(__('Invalid username or password, try again')); } } public function logout() { return $this->redirect($this->Auth->logout()); } public function isAuthorized($user) { return true; } public function index() { $this->set('users', $this->Users->find('all')); } public function view($id) { $user = $this->Users->get($id); $this->set(compact('user')); } public function add() { $user = $this->Users->newEntity(); if ($this->request->is('post')) { $user = $this->Users->patchEntity($user, $this->request->data); if ($this->Users->save($user)) { $this->Flash->success(__('The user has been saved.')); return $this->redirect(['action' => 'add']); } $this->Flash->error(__('Unable to add the user.')); } $this->set('user', $user); } }
beforeFilter:Actionが実行されるよりも前に常にこのbeforeFilterの処理が先行して処理される cakephp.euonymus.info
6. View
src/Template/Users/add.ctpを作成
<div class="users form"> <?= $this->Form->create($user) ?> <fieldset> <legend><?= __('Add User') ?></legend> <?= $this->Form->input('username') ?> <?= $this->Form->input('password') ?> <?= $this->Form->input('role', [ 'options' => ['admin' => 'Admin', 'user' => 'user'] ]) ?> </fieldset> <?= $this->Form->button(__('Submit')); ?> <?= $this->Form->end() ?> </div>
7 .ログイン画面のテンプレートを定義するため、src/Template/Users/login.ctpを作成
<div class="users form"> <?= $this->Flash->render('auth') ?> <?= $this->Form->create() ?> <fieldset> <legend><?= __('ログイン'); ?></legend> <?= $this->Form->input('username', array('label' => 'ユーザ:')) ?> <?= $this->Form->input('password', array('label' => 'パスワード:')) ?> </fieldset> <?= $this->Form->button(__('Login')); ?> <?= $this->Form->end() ?> </div>
8. ユーザ一覧画面のテンプレートを定義するため、src/Template/Users/index.ctpを作成
<h1>users</h1> <table> <tr> <th>Id</th> <th>Username</th> </tr> <?php foreach ($users as $user): ?> <tr> <td><?= $user->id ?></td> <td><?= $this->Html->link($user->username, ['action' => 'view', $user->id]) ?></td> </tr> <?php endforeach; ?> </table>
画面を確認することが出来ました。
cakephp
cakePHP3でBootStrapを使うまで
Composer で friendsofcake/bootstrap-ui をインストール
cakePHPプロジェクトの直下で以下を実行
composer.pear require friendsofcake/bootstrap-ui:~0.3
yosuke-furukawa.hatenablog.com
rootで以下を実行するとエラーがでる
以下の記事より、.bowerrcを作成してから実行する
public function initialize()
{
$this->loadHelper('Html', ['className' => 'BootstrapUI.Html']);
$this->loadHelper('Form', ['className' => 'BootstrapUI.Form']);
$this->loadHelper('Flash', ['className' => 'BootstrapUI.Flash']);
/*
$this->loadHelper('Paginator', ['className' => 'BootstrapUI.Paginator']);
*/
}
WordPressが表示されない
php.ini のmemory_limitが128だったので64に変更 fnya.cocolog-nifty.com