phpbrew 沒辦法透過 ext install 的方式安裝 pdo_mysql。
若要安裝則需要在編譯 PHP 時直接將 pdo 和 mysql 加入編譯清單:
phpbrew install 7.4.0 +default +pdo +mysql
軟體開發和生活瑣事
phpbrew 沒辦法透過 ext install 的方式安裝 pdo_mysql。
若要安裝則需要在編譯 PHP 時直接將 pdo 和 mysql 加入編譯清單:
phpbrew install 7.4.0 +default +pdo +mysql
從官方網站整理下來:
使用 Airlock 可以更輕鬆的支援 single page application (SPA)、token-based API 等等,同時也可以針對 token 設定可存取犯元 (scope)。 (感覺上類似 OAuth)
以往使用者從 Eloquent ORM 拉出資料以後,使用者可以自訂 cast type,也就是說可用者可以自動 cast attribute 成特定格式。範例可以參考 Laravel 的 Pull Request。
新增不少功能來 render HTML。詳細說明請參考 Larvel Docs。
為了史 API 更靈活,Laravel 使用 Guzzle HTTP client 來與其他 API 溝通。
透過新的方式來做 route 的 cache,即使大型網站 (800 routes) ,route matching 的速度也可以比以往快上 20 倍。
今天剛好要處理 Zip 檔,目前看到功能比較齊全的專案應該是 Ne-Lexa/php-zip,但是用 composer require 時卻發生 error message 大噴發:
仔細一看 …. 居然有「v9.99.99」的版號,該不會要世界末日了吧?
打開 comploser.lock 看一下是怎麼回事,追蹤後得知相依性如下:
laravel v6.10.1 <= ramsey/uuid ^v3.7
ramsey/uuid <= paragonie/random_compat": "^1 | ^2 | 9.99.99"
兇手抓到了,看來在 paragonie/random_compat 有一個版本號是 v9.99.99,composer 會自動拉最新的版本號來使用,因此只要任何專案 require 時沒有指定版本編號,composer 就會自動把相依性對到 v9.99.99,如果其他 package 有關連到,就是直接 dependency conflict 了。
要處理掉這個問題,只要在 composer.json 也 require paragonie/random_compat,但是加上指定版本編號如 ^v2.0,這樣 composer 就只會拉到 v2.x.x 的版本,不會去用 v9.99.99 這個版本。
ref:
第一個要求 Laravel 要使用 HTTP or HTTPS (以下簡稱 protocol … 因為字太多了 .._Drz) 的方法,其實就是在「.env」做設定,例如:
APP_URL=http://zeroplex.tw
再來網路上應該會找到,要開發者在 AppServiceProvider 中加入設定:
URL::forceScheme('https');
這邊的 URL facade,可以從 config/app.php 中追蹤到,是 IlluminateRoutingUrlGenerator::class 的 alias,設定了 forceSheme() 以後,未來透過 UrlGenerator 建立的 link 都會是設定好的 protocol。
BUT …. 就是這個 BUT,若是遇到另一個其他的 method 來產生 URL (例如 IlluminateRoutingRedirector::route() …),這樣就可能吃到開發者設定的 protocol ,則由 Laravel 會自動抓進來的 request 來判斷該用什麼 protocol,若 application 剛好是靠 Nginx 在 handle HTTP SSL 的話,request 到 Laravel 這端時 HTTPS 就已經轉成 HTTP,導致 Laravel 以為 application 沒有上 HTTPS。
若要讓 reverse proxy 後面的 Laravel application 都固定用 HTTPS 的話,可以再到 app/Http/Middleware/TrustedProxy.php 去修改設定,讓 Laravel 識別 proxy 做出對應的動作 (給正確的 protocol)。
今天很難得打開 phpMyAdmin 來看一下有什麼改變,但發現一直無法登入,顯示錯誤訊息「」。
查了一下才發現 MySQL 8 預設的密碼有多種格式,預設的格式 PHP 還不支援,所以會登入失敗 (但用 console 會成功)。
解決方法是暫時改為舊版本的密碼儲存方式:
alter user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your-password';
flush privileges;
然後在設定檔裡面多新增一條規則,把預設的密碼儲存方式改回舊版的:
[mysqld]
default-authentication-plugin = mysql_native_password