laravel validator note – regex rule

laravel的 Validator是個強大的工具
但是他在用regxp2的時候,會有一個特殊的寫法
他必須是要用陣列
否則會出現
preg_match(): No ending delimiter ‘/’ found

這個是一般的寫法
用|增加RULE

1
$ruleArr['id']= 'required|numeric|exists:book,id';

這個是REGXP的寫法

1
$ruleArr['version']=["required","regex:/^(\d+\.)?(\d+\.)?(\*|\d+)$/"];

laravel 清除cache

laravel 幾種cache清除指令

基本 cache
$ php artisan cache:clear

route cache
$ php artisan route:cache

config cache
在新刪修config以後要重新跑一次

$ php artisan config:cache

laravel 5.6 以後廢棄的優化指令,5.4以前通用 ,5.5以後因為走了php 7,這個版本對op-cache有最佳化,所以廢了

$ php artisan optimize

laravel 5.6 passport Unauthenticated

基本上問題在access token

預設安裝的情況下,laravel使用的grant_type是passport
所以在大多數的教學中,他需要先登入後取得access_token, 然後再設定header使用 Authorization: Bearer access_token
BUT
如果你使用的是client_credentials….
你就會拿到UNAUTHENTICATED

需要調整相關的設定
1.app/Http/Kernel.php
增加以下程式
use Laravel\Passport\Http\Middleware\CheckClientCredentials;
protected $routeMiddleware = [
‘client’ => CheckClientCredentials::class,
];

2.修改api route middlerware

Route::get(‘/user’, function(Request $request) {

})->middleware(‘client’);

把middleware改成client即可

docker ip 查詢 – how to get docker container’s ip

大部分查詢docker ip的時候 都是用 docker-machine

docker-machine ip [machine name]

但是如果沒有docker machine呢?

使用指令
docker inspect

先查詢docker container
docker ps -a

4aed2ceb06c0 mysql:5.7 “docker-entrypoint.s…” 12 minutes ago Up 12 minutes 127.0.0.1:3306->3306/tcp mysql57

docker inspect mysql57

[以上省略]

“Gateway”: “172.20.0.1”,
“IPAddress”: “172.20.0.2”,

這樣就可以知道 container ip 是多少了

升級 centos 7 Kernel 4.x

嚴格說不算升級
算是另外裝一組新的kernel

如果你要在centos 7使用比較新版本的docker,那你必須升級kernel,但內建的kernel只有3.10
所以必須安裝一個相對應的kernel

1.安裝 epel
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
2.安裝kernel
yum –enablerepo=elrepo-kernel install kernel-ml
3.重開機
在選單內就可以看到新的kernel

如果要改預設開機選單 讓4.x 變成預設開機
1.看安裝後的選單項目
awk -F\’ ‘$1==”menuentry ” {print i++ ” : ” $2}’ /etc/grub2.cfg

會展示妳的選單
例如這樣

0 : CentOS Linux (4.13.4-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-693.el7.x86_64) 7 (Core)
2 : CentOS Linux (0-rescue-1e36f8e932db4dc5b799fd4a613ecb0f) 7 (Core)

我要把第一個設定為預設開機選項
grub2-set-default 0

查看設定結果
grub2-editenv list
會出現
saved_entry=0
代表成功了
這時候重開機 就可以跑4.x的kernel了

php的sprintf-字串配對

如果我們今天要使用以下陣列配出一個簽名檔連結 例如這樣子

1
2
3
4
 
$data['id'] = 123;$data['id'] = 123;$data['pubkey'] ='xcsfdsfsfds';$data['timestap']='20150102';
 
$str="id=".$data['id']."&"."pubkey=".$data['pubkey']."&"."timestap=".$data['timestap'];

;

可以用這個方式去做,維護上比較容易

1
2
 
$str= sprintf( "id=%s&pubkey=%s&timestap=%s, $data['id'], $data['pubkey'], $data['timestap'] );