Symfony 3 学習メモ[03] ー ページ作成とデモアプリ

Getting Startedを一通り読み、ちょっとした達成感が得られたので、ひとまずSymfonyはここまでにしたいと思います😓。ですが、次にまた始める時になるべくスムーズに始められるようページ作成とサンプルのインストールくらいまではやっておくことにします。

ページ作成

Create your First Page in Symfony (current) をそのままやりました。しかし、/lucky/number/ でアクセスするとエラーが出ます。いきなりエラーが出てやる気を失いそうでしたが、エラーの理由を調べるために web/app.php で以下の行をfalseからtrueにしてみました。

$kernel = new AppKernel(‘prod’, true);

そうするとエラーの原因がno routeだとわかったので、ルーティングの方法(いくつか)を指定する必要があるのだろうかと思いましたが、パスの末尾のスラッシュ有無にようやく気付きました。Symfonyのルーティングではしっかり区別するようです。これまでアバウトでしたのでこれを機に注意しようと思います。

あとは、テンプレートを作ってそれを読み込むためにコントローラーを書き換えると基本的なページ追加の手順となります。

Create your First Page in Symfony (current) にはディレクトリの中身についても言及されていて勉強になります。

The Web Debug Toolbar: Debugging Dreamが出ない!

次は、Debugging Dreamとまで書かれているThe Web Debug Toolbar が表示され無い問題です。これは、ググってみると、app_dev.phpでアクセスしているときだけの機能のようです。さらに、さくらのレンタルサーバーで、つまり本番環境とされる環境ではこの機能は使えないようです。You are not allowed to access this file.などと言われてしまいます。Getting Startedの通りにデスクトップにPHPをインストールしてPHPのビルトインサーバーで作業したほうが良さそうです。しかし今回は、さくらのファイルマネージャーでサーバー上のファイルを編集するのがどこからでも編集できて便利なので、現在のIPアドレスをapp_dev.phpに追加することでレンタルサーバー上で、The Web Debug Toolbarを出現させました。先ほどのapp.phpのデバック設定はfalseに戻しました。

デモアプリをインストールする

Getting Startedの一番最初のセットアップ方法の解説で紹介されているものです。

https://github.com/symfony/symfony-demo のREADME.mdをみると以下のコマンドでインストールすると記載されていましたので、実行すると無事インストールされたようです。あとはさくらのレンタルサーバーでサブドメインの設定を行いました。

$ symfony demo

symfony_demo というアプリケーションのディレクトリができるので、symfony_demo/web をさくらのレンタルサーバーの管理画面からドキュメントルートに指定します。

管理者ログインを出来なくしてみる

勉強がてらインストールしたデモ http://demo.mallfun.info/ の管理者のログインを無効にしてみました。

デモページのバックエンド側にアクセスするとログインページがでます。そこにユーザーの追加方法が書いていますので、ユーザー周りのコマンドが用意されているということがわかります。

src/AppBundle を覗いてみるとCommandディレクトリがあり、その中にユーザー関連コマンドがあるようでした。ソース内にコマンドの使い方が記載されています。しかし、ユーザー情報のアップデートコマンドは見当たりません。パスワードは暗号化されているのでデータベースの直接更新もできなさそうです。しょうがないので新規管理者ユーザーを以下のようにデモ内のコマンドラインアプリで作り、既存のユーザーの管理者権限は直接データベースを書き換えて取ることにしました。

$ php bin/console app:add-user –admin

を実行すると管理者権限でユーザーが追加されます。ソースでは管理者権限はaddOption()で設定されているという箇所があったのですが、なかなかはじめはピンと来なかったのですが、コマンドラインオプションのことだとようやく気がついて –admin を追加して無事管理者を追加できました。以下のコマンで調べればより詳しいオプションの説明がでます。

$ php bin/console app:add-user –help

シェルのコマンドと同じような感じのPHPコマンドが作れるようです。これは結構便利ですね。

あとは、直接データベースをいじって既存のユーザーから管理者権限を取ります。

データソースは何なのか適当にディレクトリを調べていると var/data/*.sqlite を発見。SQLiteを使っているようです。初めてsqliteを使うことになりました。さくらのレンタルサーバーでは、sqlite3コマンドが入っていました。多少調べると大体解ると思います。 .help や .quit 、.tables あたりがわかれば大丈夫でしょう。

そして、以下のようなSQLを実行し管理者権限を無効にしました。

update symfony_demo_user set roles = ‘[]’ where id = ‘2’;

Emacs on さくらのレンタルサーバー

ファイルマネージャーに言及した際に、SSHでアクセスしてemacs使えば良いのではないかということに気づきました。試してみると普通に使えました。emacsの新しいバージョンやscreenを入れる人もいるようです。自分ん家みたい。充実させたいですね。今回は こちら(emacs/php-mode – Home Server Journal)を参考にphp-modeだけいれてみました。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です