- 打包 composer 和設定 laravel 的開發環境
(不打包的話在操作 PHP 的時候會遇到 could not find driver 錯誤)
1. 找個地方建個空資料夾
2. 建立 Dockerfile
3. 打包(附範例):
FROM php:7.2.9-fpm
RUN docker-php-ext-install -j$(nproc) pdo_mysql
RUN docker-php-ext-install -j$(nproc) mbstring
RUN docker-php-ext-install -j$(nproc) tokenizer
RUN curl -sS https://getcomposer.org/installer | php
RUN mv composer.phar /usr/local/bin/composer - 操作 php artisan db 相關的操作時遇到 Access denied for user 錯誤:
這個問題的原因來自於你沒有讓你 mysql 的 user 開啟遠端連線的權限
1. GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'IP' IDENTIFIED BY 'PASSWORD';
p.s 1. USERNAME 是允許登入該資料表的使用者帳號
2. IP 是允許連線的 IP 位址, 如果用'%', 會讓所有外來 IP 皆可連線
3. PASSWORD 是使用者密碼 - 操作 composer instsall 時遇到 unable to locate package unzip 錯誤:
1. sudo apt-get update
2. apt-get upgrade
3. sudo apt-get install unzip. - 錯誤 Syntax error or access violation: 1071 Specified key was too long; maxkey length is 767 bytes")
從 5.4 開始 laravel 就把資料庫的預設字符集更改成 utf8mb4,除非你使用 MySQL v5.7.7 或更高的版本才不會出現此錯誤。
1. 找到 App\Providers\AppServiceProvider 文件
2. 在函式 boot 裡面加入 Schema::defaultStringLength(191); - 架設 API Authentication (Passport) 的時候遇到 Unauthenticated 錯誤:
(假設你按照 laravel 官方的教學走,然後遇到這個錯誤,這是因為你沒有看完整篇文章,不過煮煮也懂,誰有那個美國時間慢慢讀,而且其實這部份的說明藏的很下面,就是故意要騙你看完整篇的意思... ...)
1. 打開 App\Http\Kernel.php
2. 在 $middlewareGroups 裡面加入 \Laravel\Passport\Http\Middleware\CreateFreshApiToken::class
2018年10月12日 星期五
架設 laravel 環境遇到的坑
container php-fpm
2018年9月11日 星期二
[測試] 在 Synology Nas 上用 docker 架設 Nginx
秉持著 one process per container 的原則讓我們先來備料...
首先我們需要:
然後就可以開始架設...
蛤?
你喜歡用 cmd 裝逼?
什麼?
你忘了要去哪學?
沒關係沒關係,
煮煮把他留在這裡 [docker],
忘記指令的同學可以先去複習一下,
接下來讓我們開始動手做吧!
(cgi 的操作可以參考 cmd)
1. 首先先把 mysql 架起來
蛤?
你喜歡用 cmd 裝逼?
什麼?
你忘了要去哪學?
沒關係沒關係,
煮煮把他留在這裡 [docker],
忘記指令的同學可以先去複習一下,
接下來讓我們開始動手做吧!
(cgi 的操作可以參考 cmd)
1. 首先先把 mysql 架起來
sudo docker run --restart=always -d --name mysql-server -p 3306:3306 -e MYSQL_ROOT_PASSWORD=[這裡輸入你登入這台 server 用的密碼] -e MYSQL_DATABASE=[這裡輸入你要建立的資料庫名稱] -e MYSQL_USER=[這裡輸入你要建立的資料庫使用者帳號] -e MYSQL_PASSWORD=[這裡輸入資料庫使用者的密碼] mysql/mysql-server:8.0.4
2. 接著架設 php
sudo docker run --restart=always -d --name php7-2-9 -p [隨便選個你喜歡且不是保留用的 port]:9000 --link mysql-server -e DB_HOST=mysql-server -v [project 的存放位置]:[要映射到 container 的位置] -w [project 的存放位置] php:7.2.9-fpm
3. 然後架設 nginx
sudo docker run --restart=always -d --name nginx1-9-9 -p 80:80 --link php7-2-9 -v [project 的存放位置]:[要映射到 container 的位置] -v [你寫好的 default.conf 的存放位置]:/etc/nginx/conf.d/default.conf nginx:1.9.9
p.s 懶得找的話可以參考煮煮的 default.conf
server { listen 80 default_server; server_name localhost; root [映射到 container 的位置]; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php?$query_string; } error_page 404 /index.php; location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass php7-2-9:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param DB_HOST mysql-server; } location ~ /\.ht { deny all; } }
備註:
- --name 的部分有改動的話其他地方別忘了改
- 圖形介面比較好用,初學的話當然是建議你直接用介面操作,然後再比對指令
- 如果你的操作過程有問題,可以善用 curl localhost:80 來檢查會比較快
沒問題的話應該會像我這樣...
然後可以來試吃啦!
隨便放個 phpinfo 來看看~
是不是很神奇啊~~~
2017年8月31日 星期四
[CSS] 解決文字編輯器下的 table 在 RWD 的問題
解決文字編輯器下的 table 在 RWD 的問題
解法1 - 把他變成小視窗
[ table前的框(通常我都用div) ] {
display: block;
overflow-x: auto;
}
這樣他就會在適當的時候變成左右滑動,
也不用擔心變形的問題了
解法1 - 把他變成小視窗
[ table前的框(通常我都用div) ] {
display: block;
overflow-x: auto;
}
這樣他就會在適當的時候變成左右滑動,
也不用擔心變形的問題了
[CSS] 文字超出時變成 "..."
文字超出變成 "..."
div {
overflow : hidden;
text-overflow : ellipsis;
white-space : nowrap;
}
因為是仰賴寬度,
所以請別忘的設定外圍寬度,
不然可是會失敗的!
div {
overflow : hidden;
text-overflow : ellipsis;
white-space : nowrap;
}
因為是仰賴寬度,
所以請別忘的設定外圍寬度,
不然可是會失敗的!
[Laravel][5.4.33] 如何查詢當前框架運行的版本號
如何查詢當前框架運行的版本號?
方法A:
1. 到 "/你的lavarel project/vendor/laravel/framework/src/Illuminate/Foundation" 資料夾內
2. 打開 Application.php 文件
3. 找到 "const VERSION ... ..." 這行,右邊的字串就是當前框架運行的版本號
方法B:
1. 到 "/你的lavarel project" 資料夾前
2. 打開檔案 artisan
3. 找到 "Laravel Framework" 這行,右邊的字就是當前框架運行的版本號
方法C:
1. 利用終端機(console)到 "/你的lavarel project" 資料夾內
2. 輸入指令 "php artisan -V"
3. "Laravel Framework" 這行右邊的文字就是你當前框架運行的版本號
這樣你還找不到我就真的沒辦法了... ...
方法A:
1. 到 "/你的lavarel project/vendor/laravel/framework/src/Illuminate/Foundation" 資料夾內
2. 打開 Application.php 文件
3. 找到 "const VERSION ... ..." 這行,右邊的字串就是當前框架運行的版本號
方法B:
1. 到 "/你的lavarel project" 資料夾前
2. 打開檔案 artisan
3. 找到 "Laravel Framework" 這行,右邊的字就是當前框架運行的版本號
方法C:
1. 利用終端機(console)到 "/你的lavarel project" 資料夾內
2. 輸入指令 "php artisan -V"
3. "Laravel Framework" 這行右邊的文字就是你當前框架運行的版本號
這樣你還找不到我就真的沒辦法了... ...
2017年3月31日 星期五
[jQuery]常見jQuery的三種不同架構
常見jQuery的三種不同架構 $(function(), (function($), $.fn.myFunctionName
第一種
$(function(){
// Document is ready
});
其作用和 $(document).ready()一樣 ,用意在DOM載入後執行ready()方法。
第二種
(function($) {
// Here "$" is a jQuery reference
})(jQuery)
基本上是()(para)匿名方法(anonymous function),傳承jQuery的函式庫,jQuery plugins都是用這樣的架構。
第三種
$.fn.myFunctionName = function(){
// script codes
}
2017年3月18日 星期六
[CSS] Flexible Box 彈性排版
[CSS] Flexible Box 彈性排版
隨著各家瀏覽器支援的功能越來越多,
過去常用的 display + position + float 雖然能解決大部分的排版方式,
但總還是讓人覺得不夠用,
例如要讓物件在 rwd 時能完美填滿,
或者要讓某個物件垂直置中,
又或者當我們要在一連串相同的排版中對特定物件作一些排列時,
時常讓人弄得很抓狂阿!
今天就讓安森煮煮來教各位這個好用的朋友吧!
Flexible Box 對於各家瀏覽器的對應支援版本:
資料來源:http://caniuse.com
Flexbox 可以對任何的物件使用,
但是要注意,
若是父物件被定義為 Flexbox,
那其下子物件的 float、clear 以及 vertical-align 都將會失效,
另外, Flexbox 比較常應用在 一維 的排版上,
通常針對 二維 的排版安森煮煮就會比較推薦使用 網格排版(Grid Layout)。
下面讓我們來認識一下 Flexbox 個名詞的示意圖:
容器(父元素)
容器本身有兩種定義方式:1. flex
2. inline-flex
與常用的 block 意義相同 inline 用來決定後方的元素是否強制換行。
EX:
display: -webkit-flex; /* Safari */display: flex;
display: -webkit-inline-flex; /* Safari */display: inline-flex;
Flexbox 的容器(父元素)主要有以下六種屬性:
- flex-direction
- flex-wrap
- flex-flow
- justify-content
- align-items
- align-content
接下來讓我們來一一介紹
flex-direction
主要在於決定項目在主軸(main axis)的排列方向。
flex-direction: row | row-reverse | column | column-reverse;其中:
row : 預設值, 水平主軸,排列方向為由左至右
row-reverse : 水平主軸,排列方向為由右至左
column : 垂直主軸,排列方向為由上至下
column-reverse : 垂直主軸,排列方向為由下至上
EX:
-webkit-flex-direction: row; /* Safari */
flex-direction: row;



flex-wrap
主要在於決定當項目排不下的時候,該如何換行。
flex-wrap: nowrap | wrap | wrap-reverse;其中:
nowrap : 預設值,不換行
wrap : 換行,向下排列
wrap-reverse : 換行,向上排列
EX:
-webkit-flex-wrap: nowrap; /* Safari */
flex-wrap: nowrap;
flex-flow
flex-direction 與 flex-wrap 的簡寫。flex-flow: flex-direction | flex-wrap;其中:
預設值為 row nowrap
EX:
-webkit-flex-flow: row nowrap; /* Safari */
flex-flow: row nowrap;
justify-content
主要為控制項目在主軸(main axis)上的對齊方式。
justify-content: flex-start | flex-end | center | space-between | space-around;其中(假設為 水平 主軸):
flex-start : 向 主軸起點(main start) 對齊,也就是靠左對齊
flex-end : 向 主軸終點(main end) 對齊,也就是靠又對齊
center : 置中
space-between : 以項目之間的間距都相等的方式對齊
space-around : 以每個項目本身的兩側間距相等的方式對齊
EX:
-webkit-justify-content: flex-start; /* Safari */
justify-content: flex-start;
align-items
決定項目在交叉軸(cross axis)的對齊方式。align-items: flex-start | flex-end | center | baseline | stretch;其中(假設為 垂直 交叉軸):
flex-start : 向 交叉軸起點(cross start) 對齊,也就是靠上對齊
flex-end : 向 交叉軸終點(cross start) 對齊,也就是靠下對齊
center : 項目的中心點向交叉軸中心點對齊
baseline : 以項目內的第一行文字的底線對齊
stretch : 預設值,如果項目沒有定義高度或定義為 auto 時,項目的高度將會填滿整個 Flexbox 的高度
EX:
-webkit-align-items: stretch; /* Safari */
align-items: stretch;
align-content
主要在於決定多個交叉軸(cross axis)時的對齊方式,如果項目只有一行(也就是只有一個交叉軸),
此屬性將會失效。
align-content: flex-start | flex-end | center | space-between | space-around | stretch;其中:
flex-start : 全部向交叉軸起點(cross start) 對齊,也就是靠上排列
flex-end : 全部向交叉軸起點(cross start) 對齊,也就是靠下排列
center : 全部向交叉軸起點(cross start) 對齊,也就是置中排列
space-between : 以每行項目之間的間距都相等的方式向交叉軸對齊
space-around : 以每行項目本身的上下間距相等的方式向交叉軸對齊
stretch : 預設值,放大每行項目的高度到佔滿整個交叉軸
EX:
-webkit-align-content: stretch; /* Safari */
align-content: stretch;
項目(子元素)
Flexbox 的項目(子元素)有六種屬性:- order
- flex-grow
- flex-shrink
- flex-basis
- flex
- align-self
各屬性的介紹如下
order
決定項目的排列順序,對於有 全局屬性(Global attributes) 的標籤可能會失效(例如:nav),數字排列由小到大。order: [integer];預設值為 0,無單位
EX:
-webkit-order: 0; /* Safari */
order: 0;
flex-grow
定義項目在排版後還有剩餘空間時該如何放大的比例分配。flex-grow: [number];預設值為 0,無單位,數值不可為負值,數值為 0 時不放大
EX:
-webkit-flex-grow: 0; /* Safari */
flex-grow: 0;
flex-shrink
定義項目在排版當中剩餘空間不足時該如何縮小項目的比例。
flex-shrink: [number];預設值為 1,無單位,數值不可為負值,數值為 0 時不縮小
EX:
-webkit-flex-shrink: 0; /* Safari */
flex-shrink: 0;
flex-basis
定義項目初始化的的主軸空間(main size),也就是項目的寬度。flex-basis: auto | [width];預設值為 auto,瀏覽器計算此屬性來計算主軸(main axis)的剩餘空間
EX:
-webkit-flex-basis: auto; /* Safari */
flex-basis: auto;
flex
flex-grow、flex-shrink 與 flex-basis 的簡寫。
flex: none | auto | [flex-grow] [flex-shrink] ? || [flex-basis];預設值為 0 1 auto,W3C建議在定義項目屬性時優先使用此屬性,因為瀏覽器會根據此屬性計算排版相關值,以及使程式能正確初始化相關數值
EX:
-webkit-flex: auto; /* Safari */
flex: auto;
align-self
定義特定項目可以有與其他項目不一樣的對齊方式,類似 align-items,但 align-items 主要是針對容器,此屬性主要是針對項目,就像繼承的概念,可以覆寫 align-items 的屬性。align-self: auto | flex-start | flex-end | center | baseline | stretch;容器有定義時預設值為 auto,容器沒有定義時預設值為 stretch
EX:
-webkit-align-self: auto; /* Safari */
align-self: auto;
[點我參考範例]
訂閱:
文章 (Atom)















