會出問題的原因是Laravel預設的database character為utf8mb4,v5.7.7以下版本不支援所以噴錯,所以需修改code如下:
use Illuminate\Support\Facades\Schema;
public function boot()
{
Schema::defaultStringLength(191);
}
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null, ],
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => 'InnoDB ROW_FORMAT=DYNAMIC', ],
主要原因是Laravel預設會自動開啟CSRF,問題來了第三方無法設置token,導致頁面不執行,修改方式如下:
protected $except = [
'webhook/*' //在這裡輸入你想關閉CSRF的Route路徑
];
- 參考資料:https://laravel-news.com/excluding-routes-from-the-csrf-middleware
- 參考資料:https://laravel.com/docs/5.8/csrf#csrf-excluding-uris
composer.phar create-project laravel/laravel --prefer-dist
rm -rf public_html //刪除預設資料夾public_html
ln -s laravel/public/ public_html //建立軟連結
RewriteEngine on
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ public/$1 [L]
- 參考資料:https://www.linuxhelp.com/how-to-install-laravel-in-whmcpanel-server
- 參考資料:https://webmasters.stackexchange.com/questions/98700/htaccess-direct-all-requests-to-public-dir-when-using-framework-etc
使用php artisan config:cache 之後,使用getenv會出現false 使用env 會出現 null,那是因為 config:cache會把env cache 到 config ,其實沒必要再透過env取得環境,此時只要使用config function即可取得env設定的值。
比如要取得APP_KEY ,如果沒有cache,可以藉由getenv('APP_KEY') 取得,但cache則用 config('app.env') 取得(app.env 代表在config資料夾中的app.php 中的 env)。