近日有個小小project,任務很簡單:接收對方API POST過來的Data。
很直覺的想法就是在Laravel開個project,開個Route讓對方把資料丟到我指定的URL。
開好後我自己用PostMan測試了一下,發現無法接收資料,反而出現了
"The page has expired due to inactivity. Please refresh and try again"
很直覺的就想到和CSRF有關....

因為 Laravel 5 在 POST、PUT、DELETE 的路由方法中,預設都會進行 CSRF Token 的檢查。
確認 POST 過來的資料中 _token 的資料值與 Session 中的 token 是否相符,或是驗證標頭中的 X-CSRF-TOKEN 是否相符。

可是呢,我這個案子並無法直接對方對方的技術人員,僅有業務窗口,溝通上並不容易。
還好,這台主機對外就只為對方開放,其它的連線都是阻擋的。索性就想把這個路由的CSFR給關了!!

設定方法很簡單,只要在 app/Http/Middleware/VerifyCsrfToken.php 這個檔案中把要關閉CSRF的路由加上去就可以了!!

緣由

其實十幾年來一直使用Wordpress在寫Blog, 雖然最近這5~6年來也不怎麼在更新了(覺得挺可惜的)。
只是慢慢覺得Wordpress真的好肥大,前台還好,但後台的管理就顯得吃重!

最近,因為工作需要想要找一個平台來撰寫系統需求,看來看去好像 Gitbook最符合我想要的,可以順便玩玩MarkDown好像也不錯,無奈免費帳號無法建立Private Book......
後來在官網看到可以可以申請education discounts,結果申請信寄出去一個星期,連個拒絕信都沒收到。

最後無意間看到FB前端群組有人在討論Hexo,然後就與前陣子小玩一下的Medium平台和Hexo之間抉擇中,還是把Hexo裝了起來。

Medium

優點

  • 線上編輯平台,不需架站技術
  • 隨處可編輯內容,提供手機APP
  • 可以為不同的主題建立不同的publications

缺點

  • Markdown語法使用上卡卡的(這應該是我對MarkDown還不熟的關係)
  • 程式碼高亮功能太弱了,雖然可以插入GitHub gist或是CodePen和JSFiddle的方式處理,但實在不怎麼方便。(會影響發文的動力)

Hexo

優點

  • 版面選擇性較多
  • 系統是建在自己的環境,如果不發佈出去,在localhost將Server跑起來,還是可以寫一些比較Private的文章或是文件。
  • 討論的文章很多:Medium寫的人不少,但認真爬文,文章並不多
  • 文章可以轉成靜態網頁,並發佈到GitHub(GitPages)平台去,瀏覽速度蠻快的。也不用自己架站!!
  • 好備份,因為文章的原始檔是Markdown的md檔,不需要資料庫,萬一以後出問題,很好還原!

缺點

  • 系統安裝不難,建立很快。。。 但對於系統架構的運作及流程,真的是花了我一些時間研究及除錯。
  • Hexo實在太土炮了~~ 雖然Hexo也可以安裝後台管理套件,但實在是蠻陽春的。大部份的操作及設定都得在Command Line 及修改設定檔的方式完成
  • 系統環境受限,不方便在不同電腦上發文。得將安裝環境複制到其它電腦或是必需對Git有一定程度的操作才可以轉移。

後記

這是一個簡單的初體驗,但也花了我幾天時間讓整個站能完善。說實在的,並不難,大多的時間都花在排解細節和搞懂和GitHub之間的關係上。
其次就是想把原本在Wordpress上的陳年文章轉過來,但發現轉移的過程發現有些文章怪怪的,進而還會影響靜態網頁檔的產生。
最後還是暫時先放棄,等之後真的有時間再確認!!

原本我是在GCP上起了一台免費的instance,在上面安裝Hexo,最後再發佈到GitHub。好處是,不管我在什麼電腦環境,我都可以遠端連到那台VM上撰寫文章。
但是,用VI打中文編輯長篇文章,還是覺得太痛苦了。最後我把整個環境複制到NAS上再同步到 Mac Pro,在Mac上可以用vscode編輯,再切到Command Line 發佈出去,很是方便吶!!

這也是一個沒效率的實例,為了喝牛奶而養了頭牛。繞了一大圈,原本要寫的系統需求書,到現在還沒個影~~~ XD

參考資料

主程式的安裝過程就不交待了,網路上超多分享文,官網的文件也交待的很仔細。
倒是佈景主題與第三方套件的安裝及與Github的整合這一塊我覺得會花上一點心力。
以下就列出幾篇安裝過程中對我有幫助的文章,也希望日後如果重建,可以再回憶一下!!

最近安裝了 MySQL 5.7的版本後發現
使用預設的Root密碼(空白)居然無法進入
上網查了一下, 居然log檔裡有很特別的密碼字串
grep 'temporary password' /var/log/mysqld.log

還好用以下的方式,將初始密碼給改掉了!!
1. Stop mysql:
systemctl stop mysqld

  1. Set the mySQL environment option
    systemctl set-environment MYSQLD_OPTS="--skip-grant-tables"

  2. Start mysql usig the options you just set
    systemctl start mysqld

  3. Login as root
    mysql -u root

  4. Update the root user password with these mysql commands
    mysql> UPDATE mysql.user SET authentication_string = PASSWORD('MyNewPassword')
    -> WHERE User = 'root' AND Host = 'localhost';
    mysql> FLUSH PRIVILEGES;
    mysql> quit

  5. Stop mysql
    systemctl stop mysqld

  6. Unset the mySQL envitroment option so it starts normally next time
    systemctl unset-environment MYSQLD_OPTS

  7. Start mysql normally:
    systemctl start mysqld

Try to login using your new password:
7. mysql -u root -p

最近在玩 Laravel
在Mac OSX上安裝環境是蠻順的
但這二天試著在CentOS上安裝
發現使用laravel new projectname 時
會有以下的訊息
-bash: laravel: command not found
上網查了一下解決方式
大部份的人及官方文件都是提示你

Make sure to place the ~/.composer/vendor/bin directory (or the equivalent directory for your OS) in your PATH so the laravel executable can be located by your system.

接著我就照做設定
Setup PATH: export PATH="~/.composer/vendor/bin:$PATH"
發現問題依然存在
後來又將composer重裝,發現我的安裝路徑和別人不同
是放在
~/.config/composer/vendor/bin
重新再設定一次$PATH就OK啦....

export PATH="~/.config/composer/vendor/bin:$PATH"

只是為什麼路徑會不同呢?

最近想來玩玩 Phalcon, 但是我的OSX是安裝MAMP,所以Phalcon官方針對OSX提供的安裝方法似乎不太管用。
上網查找了一下,發現必需將MAMP裡的PHP重新再編一下,終於是裝起來了,所以,來記錄一下吧!!

1.確定你MAMP所跑的PHP版本:
這部份你可以在MAMP的console或是用phpinfo()看看
像豆子早前安裝的版本就是 PHP 5.5.23

2.確認MAMP PHP bin 的目錄路徑:
一般來說 MAMP PHP bin的安裝路徑會是在
/Applications/MAMP/bin/php/phpx.x.x/bin
以上的x.x.x就是您PHP的版本
以豆子的環境來看,路徑就會是
/Applications/MAMP/bin/php/php5.5.23/binOpen

3.開開Terminal並執行下列指令:
export PATH=/Applications/MAMP/bin/php/php5.5.23/bin:$PATH

4.到PHP官網下載PHP的source檔:
這部份可能要留意一下,像豆子的PHP是5.5.23,但官網現在主要提供的版本己經到5.5.35,這是沒有關係的。
就把它下載下來,放到以下目錄:(預設是沒有include/php目錄的,請自建)
/Applications/MAMP/bin/php/php5.5.23/include/php

5.Configure the PHP source:
cd /Applications/MAMP/bin/php/php5.5.23/include/php
./configure
在這個部驟,豆子出現以下的錯誤:
configure: error: Please specify the install prefix of iconv with --with-iconv=

但明明豆子的 /usr/bin/iconv 明明就有,但怎麼指定就沒效
上網查一下,就用brew 重新安裝 libiconv吧

brew install homebrew/dupes/libiconv

然後再用以下指令重新configure

./configure --with-iconv=brew --prefix libiconv

之後就會看到Thank you for using PHP.的訊息啦

6.Compile Phalcon:
接著下載Phalcon回來Compile
git clone --depth=1 git://github.com/phalcon/cphalcon.git
cd cphalcon/build
sudo ./install

這階段豆子又卡關了。。。
出現:$PHP_AUTOCONF environment variable. Then, rerun this script.
所以,用brew再裝裝autoconfig再重新configure
brew install autoconf

7.在php.ini裡加入phalcon extension file
如果不知道你的php.ini在那裡,用phpinfo()看一下最保險
在php.ini裡加上
extension=phalcon.so

8.重啟MAMP

9.檢查:
在phpinfo()的資訊裡應該就會多一個 phalcon的相關資訊囉

phalcon