Category "Laravel5"を表示しています。
2019.9.22 日
Laravelのプロジェクトを立ち上げるときはLaradockが便利です。Laravel5で使うその他のツールやDBも一通り揃っているので大変便利です。結構頻繁に更新も行われているものなのでちゃんとしているという印象。 Laradockのclone 入手の方法はこれで終わり。適当なディレクトリを作ってcloneするだけです。 $ git clone git@github.com:laradock/laradock.git Laradockの設定 基本的にはenvファイルを作成するだけです。env-exampleを.envにコピーしてから設定をします。これで各アプリケーションやミドルウェアにでデフォルトの設定が完了しました。 $ cd laradock $ cp env-example .e...
2019.9.16 月
CentOS7でapacheを動かしている環境です。PHPは7.2.17で動いています。 laravel5でtinkerを実行すると以下のようなエラー(Warning) $ php artisan tinker PHP Warning: Module 'ssh2' already loaded in Unknown on line 0 ssh2が二重に読み込まれているっぽいので、エクステンションの部分を検索してみる。/etcあたりを検索。 $ find ./etc -type f | xargs grep "ssh2.so" ./php.d/ssh2.ini:extension=ssh2.so ./php.d/20-ssh2.ini:extension=ssh2.so どっちかが無駄っぽい気...
2019.3.28 木
maatwebsite/excelっていうパッケージがあってLaravelで開発するぶんには何もしなくてよいです。 https://github.com/Maatwebsite/Laravel-Excel https://packagist.org/packages/maatwebsite/excel インストール インストールします。(2019-03-28現在の最新版は3.1.10でした) php composer.phar require "maatwebsite/excel:~3.1.10" 後述しますが、3系のパッケージは読み込みの機能がなくなったようです。(前回の方々がなんで?って言ってます) ですので、エクセルの読み込み機能が必要なときは2系のパッケージをインストールしないと駄目...
2019.3.20 水
リダイレクトはかなり便利になってます。これはヘルパー関数になるのだと思われ。 普通のリダイレクトはこのような形になります。http://example.com/page/indexにリダイレクトされます。 return redirect('page/index'); https://blog.capilano-fw.com/?p=566
2018.12.24 月
Laravelのキャッシュシステムは抜群に使いやすくなっているのでほとんどの場合使うことになると思います。PHPそれ自体でキャッシュを使う場合はroot権限相当で多くの作業が必要なのですが、Laravelはそこらあたりをとても簡単にまとめてくれています。ベンチマークはとっていないので実際速いのかどうかという問題はあるかもしれないですが、比較的小規模なwebアプリの場合はほとんど問題のない速さで使えています。 キャッシュの種類はたくさんあって必要なキャッシュシステムはすべてサポートしています。また裏側のキャッシュシステムがどうあれLaravel上でのキャッシュ扱い方は非常に容易です。 apc PHPのあのキャッシュ array ただ配列にぶっこむだけ Redis う、玄人っぽい(というかちゃん...
2018.12.10 月
コマンドクラスの作成 コマンドのクラスを作成します。 php artisan make:command monitorAppStatus app/Console/Commands/monitorAppStatus.phpが作成されます。 このクラスをartisanで実行するためにはこのクラスファイルの$signatureを書き換えます。 protected $signature = 'command:name'; ↓ protected $signature = 'monitor:app'; これでphp artisan monitor:appで実行できるようになります。 コマンドの中身を作成 コマンドの実際の中身の作成は、このクラスファイルのhandle()部分に書きます。 public ...
2018.11.8 木
とかいうタイトルですが普通にhttpプロトコルでリクエスと投げてレスポンスが返ってくるというだけの話です。RESTという観点で言えば認証のところがちょっとおもしろいというだけです。いわゆるあのRESTFULLでセッションを持たないという考え方です。それ以外は別に特に何も考えなくていいです。 ルーティングとエンドポイント APIのエンドポイントの設定です。 Route::get('/foobar/search/standard', function(){ echo "foobar"; }); “/foobar/search/standard”にアクセスしたら、Laravelはデフォルトで”/api/foobar/search/standard”が...
2018.10.24 水
PHP7でOracleに接続するでPHP7からの接続はできるようになりました。 LaravelでOracleを使うときの具体的な手順を解説します。 パッケージのインストール 必要なパッケージはこれ。 – Packagist: yajra/laravel-oci8 – Github: yajra/laravel-oci8 $ php composer.phar require yajra/laravel-oci8:v5.7.2 どうやらこれだけで動くっぽいです。 Databese接続パラメータの設定 例によってconfig/database.phpに設定します。Oracleはデフォルトで設定項目がない(配列に入っていない)ので自分で追加してあげる必要があります。 'co...
2018.7.3 火
LaravelのAPIルートは便利。公式ドキュメントでは「routes/api.php中のルートはステートレスで、apiミドルウェアグループにアサインされます。」とありますが、一つのルーティングから必要なルートを全部一辺につくってくれるので大変便利です。正にAPI。 例えば”/items”というルーティングからだと、以下のようなルーティングを自動的にやってくれます。(といってもちょっと足りなかったりちょっと冗長だったりするもんです。) // approot\routes\api.php Route::resource('/items', 'HomeController'); $ php artisan route:list Method URI Name Action...
2018.6.22 金
普通のページでも異常なアクセスをある程度検知してアクセス不可にしておきたいと思って簡易的なもの作りました。 Laravelのログインスロットルをそのまま使ってもよかったのですが、ここではわかりやすくミドルウェアでちょろっと書いた感じです。 基本はリクエストの根っこのところでIPをとって、30秒の間に30回以上のアクセス(だいたい1秒に1回のアクセス)があったら403に飛ばします。コンテンツや好みに応じてパラメータを適当に調整してください。 あと.envで設定するときは、 ## Throttle THROTTLE_KEEP_TERM=0.5 THROTTLE_LIMIT=30 こんな感じで設定も可能です。 Source php artisan make:middleware Throttle ...
2018.6.19 火
ミドルウェアというややこしい用語のせいで皆混乱気味です。Apacheはおっさんにしてみればミドルウェアだからです。(厳密にいえば名前空間が必要です。) Laravelのミドルウェアはちょっと語弊があるかもですが、アプリケーションに投げられたリクエストを各コントローラに渡す前に処理するときに使います。いわゆるフィルタリングの機能です。 リクエストの初期段階の処理をするのに向いています。 Laravel 5.6 リクエストのライフサイクル ミドルウェアの使い方 コマンドで作るのが楽です。 php artisan make:middleware Foobar app\Http\Middleware\Foobar.phpが作成されます。 <?php namespace App\Http\Mid...
2018.5.31 木
Laravel5 共通クラス(汎用関数)をつくるでは比較的少量の場合というか基礎的な考え方みたいなものなので実践ではあまり役に立たない場合が多いかも。大きなアプリケーションになってくるとこれだと全然足りないわけです。 なのでここではサービスプロバイダーとして複数のクラスを一括で共通で扱える方法を紹介します。 HelperServiceProviderの作成 サービスプロバイダーを作成します。 php artisan make:provider HelperServiceProvider 作成したHelperServiceProviderのregisterメソッドを以下のようにします。 public function register() { foreach (glob(app_path()....
2018.5.25 金
Laravelは値をキャッシュしておくことでより高速にレスポンスできるという機能があります。アクセスの度にSQLフル回転みたいなのはあまりよくないので、更新がない限りキャシュから呼ぶのが適当であったりなど使い方はいろいろです。 キャッシュは新規登録・更新・呼び出し・削除といった感じでいわゆるCRUDです。 キャッシュの種類 apc: APC(Alternative PHP Cache)というPHPの中間コードのキャッシュや最適化を行う拡張モジュールを使用します。php.iniでサイズをちょっと大きくしないといけないときもありますので要注意。 array: キャッシュをしない場合の指定になります。(配列に格納されるわけじゃないです。)これを指定しておくとキャッシュを用いる実装コードがあってもエ...
2018.5.14 月
これらのライブラリは普通のプレーンなPHPでも使えるので重宝しますよ。 jenssegers/agent Mobile Detectのラッパーなんですが、Mobile Detectより人気ある感じになっちゃってますか。これ。 https://packagist.org/packages/jenssegers/agent https://github.com/jenssegers/agent monolog/monolog 普通のPHPでも便利。 https://packagist.org/packages/monolog/monolog https://github.com/Seldaek/monolog nesbot/carbon 時間計算は絶対に使うでしょ。だいたいのアプリで。 http...
2018.5.12 土
PHPもセキュリティーがしっかりしてきました。 文字列をハッシュ化する .... use Illuminate\Support\Facades\Hash; .... class someClass { $h = Hash::make("foo"); } 最低限これだけで大丈夫。暗号化したものを保存しておけばよいです。 パスワードを照合 どうしていつの時代になってもパスワードを復号化するって思っている人多いんですかね。 $boolen = Hash::check('foo', $h); 照合できたら1、それ以外は空を返します。 Laravel 5.6 ハッシュ http://www.kaasan.info/archives/3723
2018.5.9 水
日本語で検索すると公式ドキュメントでは「ペジネーション」なので要注意。 DBセレクトの量が増えると当然必要な機能になってきますが、Laravelだと簡単にできて楽。 DBテーブルからオフセットでセレクトする use App\SomeModelName; .... $data = SomeModelName::paginate(5); あるいは、 use Illuminate\Support\Facades\DB; .... $data = DB::table('some_model_names')->paginate(5); みたいなとり方で5件と5件分のオフセットのページネーションを作成してくれます。 view側では、$dataをオブジェクトのまま渡してあげて、 {{ $data-&...
2018.5.1 火
いろいろと複雑且つ難しい方法はさておき、 $url = $request->url(); これで純粋にURL取得。 $url = $request->fullUrl(); これでGETクエリまでを含めたすべての値が取得できます。 あとは何か適当に加工すればよいかと。 リクエストの取得
2018.5.1 火
基本的なルーティング Laravelのルーティング書き方まとめ
2018.4.27 金
Laravel5のパスワードの暗号化は、 vendor/laravel/framework/src/Illuminate/Hashing/BcryptHasher.php ここらでやっております。 $hash = password_hash($value, PASSWORD_BCRYPT, [ 'cost' => $this->cost($options), ]); コストをオプションとして設定している感じです。普通です。 昨今のセキュリティー云々のあれでpassword_hash()関数自体がかなり複雑なことになっているので私は解析を諦めました。かつては保存してあるパスワードと入力されたハッシュを比較すれば済むというようなこともなくなり照合自体もpassword_verify(...
2018.4.19 木
config/app.phpを修正。 /* |-------------------------------------------------------------------------- | Application Timezone |-------------------------------------------------------------------------- | | Here you may specify the default timezone for your application, which | will be used by the PHP date and date-time functions. We have gone | ahead an...
2018.4.9 月
Laravel5.5でメール認証登録できるようにする Laravelのデフォルトの認証機能を作成する Laravel5.5でメール認証登録できるようにする 認証テーブルをカスタマイズ 認証テーブルを作成する 認証機能を新しいテーブルに紐付ける Laravelのデフォルトの認証機能を作成する Laravel5でユーザー認証の設定 デフォルトの機能はartisanコマンド一発で作成さきます。 php artisan migrate php artisan make:auth デフォルトのDBテーブルを使って簡単な認証機能を実装できます。 ですが、これだといわゆる一般的なものではなく実在しないメールアドレスなどでも登録できてしいます。 Laravel5.5でメール認証登録できるようにする 通常の会...
2018.4.3 火
事前の準備 項目 値 モデル app/SampleModel.php (namespace: App\SampleModel) テーブル名 sample_models を想定して説明します。(それともApp\Flightがいいですか?) namespace デフォルトの状態であれば、 use App\SampleModel; しておきます。newでもstaticでもそのままクラスが使えます。 通常は以下ぐらいやればこと足ります。 use Illuminate\Http\Request; use App\SampleModel; use Illuminate\Support\Facades\DB; newする $sample_obj= new SampleModel; でOKです。ほんとすごい...
2018.4.1 日
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max k ey length is 767 bytes (SQL: alter table users add unique users_email_unique(email) ) Laravel5.5 MariaDB 10.1.28-MariaDB – Source distribution php artisan migrateで発生 MariaDBだったら大丈夫だろうと思っていたら駄目でした。MySQLだったらver5.7.7以降で解消されているらしいです。 MySQLではPRIMARY_KEYおよびUNI...
2018.3.17 土
https://readouble.com/laravel/5.5/ja/packages.html
2018.3.13 火
前提条件 composerをそこそこ使える人。 gitをそこそこ使える人。 Githubのアカウントを作ってpush出来るように鍵の設定などを行っておく。 Travis CIのアカウントを作っておく。 (Githubのアカウントでログイン。) Packagistのアカウントを作っておく。 (Githubのアカウントでログイン。) Githubで適当なリポジトリを作成する Pachagistに登録するリポジトリとして適当なリポジトリを作成します。 ここでは osamuya/testPackage https://github.com/osamuya/testPackage.git として作成しておきます。 testPackage/としてプロジェクトを作成する感じでよいかと思います。 Packa...
2018.3.4 日
マイグレーションの設定でも結構便利なものがあります。 softDeletes() $table->softDeletes(); いわゆるdelete flag的な仕事をやってくれます。この設定はselectの際に特にwhere文で条件設定をしてなくても理論削除の有無を判断してくれる便利さ。 softDeletes()でテーブルカラムを作成するとカラム名はdelete_atになります。フラグが立つのではなく削除した日時が追加されます。 use Illuminate\Database\Eloquent\SoftDeletes; をモデルに追加して使用します。 通常のdelete, destroyでdeleted_atに削除時間がセットされます。 モデルでの検索時に論理削除したデータは結果に...
2018.2.28 水
Rsyncの使い方では生のコマンドラインの説明なんですが、PHPでRsync使おうとするといろいろ面倒ですが、albertofem/rsync-lib使うとすごい楽ちんです。単にRsyncのラッパーで中でコマンドラインを生成してshell_exec()しているだけというものですが、とてもシンプルでよくできています。 Packagist@ https://packagist.org/packages/albertofem/rsync-lib Github@ https://github.com/albertofem/rsync-lib インストールと入手 コンポーザーで落としてくるのが楽。すでにコンポーザーの設定している人はコンポーザー自体を落としてくる必要ないです。 php -r "copy...
2018.2.19 月
Expected response code 250 but got code "530", with message "530 5.7.1 Authentication required " キャッシュクリアすると治るっぽい。
2018.2.13 火
PackagistとGithubを使った開発は、もちろん単独で可能ですが、ここではLaravelに組み込むかたちでの開発手順を紹介します。 vendor以下はGit管理から外す Laravelの開発ではvendor以下はcomposerで引っ張り込むのがベストなので、.gitignoreにvendor以下を登録しておくのが前提です。ここの開発保守は他の方々におまかせしてアプリケーションの開発者はcomposerに頼っちゃうというのがベスト・プラクティスとなるかと。 その他の人にお任せしている部分の一部を自分でも開発してしまおうという塩梅になります。 開発のスターター 開発のスタートとしては、vendor以下にGithubのアカウントでこしらえると後々楽です。それから開発ソフト名みたいな感じが...
2018.2.12 月
POSTする際にCSRFトークンを設定していないか、あるいはトークンのセッションが切れたときに出るLaravelのデフォルトのエラーです。 このエラー画面をカスタマイズします。 デフォルトのコントローラは、 vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php vendor/laravel/framework/src/Illuminate/Session/TokenMismatchException.php デフォルトのbladは、 vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/419...