您好,登錄后才能下訂單哦!
本篇內容主要講解“如何處理Laravel有關的一些錯誤”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何處理Laravel有關的一些錯誤”吧!
禁止全局csrf認證
在app/Http/Kernel.php中,$middleware表示全局中間件,而$routeMiddleware表示針對某個路由的中間件,所以只需要把csrf在$middleware中注釋掉,然后在$routeMiddleware中添加'csrf' => 'App\Http\Middleware\VerifyCsrfToken'
如果要在某個路由上使用就這樣:
Route::group(['middleware' => 'csrf'], function(){ // csrf保護的接口 Route::get('/', 'HomeController@index'); }
處理上傳文件
$file = Input::file('upload_file");// 獲取上傳文件對象 $file->isValid() // 檢驗文件是否有效 $file->getClientOriginalName(); // 獲取文件原名 $file->getFileName(); // 獲取上傳后緩存的文件的名字 $file->getRealPath(); // 獲取緩存文件的絕對路徑 $file->getClientOriginalExtension();// 獲取上傳文件的后綴 $file->getMimeType(); // 獲取上傳文件的MIME類型 $file->getSize(); // 獲取上傳文件的大小
手動清理配置緩存
php artisan config:cache
插入數據的時候出現MassAssignmentException in Laravel錯誤
需要給數據表設置可訪問的字段,在Model里面
protected $fillable = array('字段1', '字段2');
php artisan db:seed出現[ReflectionException] Claxx XXXTableSeeder dows not exist錯誤
這是因為新增加了文件但是composer沒有感知到,需要先執行composer dump-autoload
定義/修改字段類型為timestamp時出現錯誤:”Unknown column type “timestamp” requested.”
按照[How do I make doctrine support timestamp columns?]的做法,目前最簡單的方式是直接用DB::statement()來寫SQL語句
POST數據的時候出現The payload is invalid
我遇到這個情況是因為在做復雜的表單提交,直接提取X-XSRF-TOKEN的值,但是由于沒有轉移,導致后端token揭秘失敗
保存model的時候出現錯誤:Missing argument 2 for Illuminate\Database\Eloquent\Model::setAttribute()
一般是Model的幾個屬性沒有設正確,檢查這幾個值incrementing/timestamps/primarykey/fillable
隊列出現Cannot initialize a MULTI/EXEC transaction over aggregate connections
升級到最新版laravel吧,然后將redis的擴展切換到phpredis,laravel5.3之前自帶的predis不支持redis的sentinel,并且有些redis操作強依賴于predis的事務操作,各種糾結,最后都不能成功。或者自己寫類似的中間件
Class ‘Symfony\Bridge\PsrHttpMessage\Factory\HttpFoundationFactory' not found
偶爾安裝了某些個第三方庫會出現這種幺蛾子,可以用這種方式解決composer require symfony/psr-http-message-bridge
更新表時出現AH00052: child pid 71 exit signal Segmentation fault (11)
原因可能是沒有設置主鍵而直接在該表上面更新數據,導致ORM不知道到底該更新誰。并且Laravel不支持復合主鍵(https://github.com/laravel/framework/issues/5517,作者不支持這種做法)。這種情況,要么給該表添加唯一主鍵,要么只能用where直接更新了。
Error while reading line from server
Predis需要設置read_write_timeout=0或者-1,特別是daemon任務,最好設置不超時
PHP Fatal error: Uncaught exception 'ReflectionException' with message 'Class log does not exist' in /Users/freek/dev/laravel/vendor/laravel/framework/src/Illuminate/Container/Container.php
出現于5.2版本中,原因是.env文件中的配置的值,中間存在空格,如果中間有空格,需要將值用雙引號包起來
Class env does not exist / Class request does not exist
通常出現在框架還未加載完成就報錯,但是在處理錯誤的時候卻使用了env()/request()這個功能,導致沒有打印真實的錯誤。處理方式,一是不要使用app()->environment('...'),而是檢查.env文件中是否有錯誤,例如包含空格的值,必須用雙引號包圍。我在自定義ExceptionHandler中遇到過幾次
The given data failed to pass validation
認證出錯卻不知道具體錯在哪里并且狀態碼是500,如果有用Dingo API,那么注意Request不要繼承use Illuminate\Foundation\Http\FormRequest而應該是use Dingo\Api\Http\FormRequest
Call to undefined method setHidden
注意command的主邏輯不是fire而應該是handle
啟動時報錯Unknown: failed to open stream: No such file or directory in Unknown on line 0
可能是錯誤地刪除了server.php文件,可以直接自己寫一個:
/** * Laravel - A PHP Framework For Web Artisans * * @package Laravel * @author Taylor Otwell <taylor@laravel.com> */ $uri = urldecode( parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH) ); // This file allows us to emulate Apache's "mod_rewrite" functionality from the // built-in PHP web server. This provides a convenient way to test a Laravel // application without having installed a "real" web server software here. if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) { return false; } require_once __DIR__.'/public/index.php';
composer install時報錯: Please provide a valid cache path
需要手動創建緩存目錄,在storage/framwork下面新建sessions、views、cache文件夾即可
總結
到此,相信大家對“如何處理Laravel有關的一些錯誤”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。