laravel 踩过的坑-1

最近在跟iwali大师学习php

详见:http://iwanli.me/

其中08-Laravel5.2视频教程之Entrust简单使用(一) 这一节遇到一个大坑

不管怎么操作总是提示:

[Symfony\Component\Debug\Exception\FatalThrowableError]
Class 'App\Permission' not found
或者
[Symfony\Component\Debug\Exception\FatalThrowableError]
Class 'App\Role' not found

具体解决坑的经过如下:

1. 首先 我执行了 php artisan vendor:publish
生成了 config/entrust.php

2. 按照群主的教程 修改
‘role’ => ‘App\Models\Role’,
‘permission’ => ‘App\Models\Permission’,

3. 但是不管怎么都提示 找不到App\Permission 或者 App\Role

定位:

我在:/vendor/zizaco/entrust/src/Entrust/Traits/EntrustPermissionTrait.php

这个文件中用dd命令 打印 Config::get(‘entrust.role’)

返回的还是 App\Role

但是我明明修改了 配置文件啊~~~~~痛苦

于是 我删除了这个包 zizaco/entrust

通过composer update重新按照了这个包 但是还是提示这个问题

我在:/vendor/zizaco/entrust/src/Entrust/Traits/EntrustPermissionTrait.php

这个文件中用dd命令 打印 Config::get(‘entrust.role’)

打印出的还是 App\Role

于是乎找了 这个 配置文件 vendor/zizaco/entrust/src/config/config.php

修改了

‘role’ => ‘App\Models\Role’,
‘permission’ => ‘App\Models\Permission’,

但是用dd 在这个文件中 /vendor/zizaco/entrust/src/Entrust/Traits/EntrustPermissionTrait.php

打印 Config::get(‘entrust.role’)

还是 App\Role

我都要爆粗了

无意中执行 php artisan

看到了 好多命令

其中有两个

cache:clear Flush the application cache
config:clear Remove the configuration cache file

于是乎执行了

vagrant@homestead:~/work/myapp$ php artisan config:clear
Configuration cache cleared!
vagrant@homestead:~/work/myapp$ php artisan cache:clear
Cache cleared successfully.

然后 后面 就OK了~~

vagrant@homestead:~/work/myapp$ php artisan migrate:refresh
Rolled back: 2016_08_25_032847_entrust_setup_tables
Rolled back: 2014_10_12_100000_create_password_resets_table
Rolled back: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_100000_create_password_resets_table
Migrated: 2016_08_25_032847_entrust_setup_tables
vagrant@homestead:~/work/myapp$ php artisan db:seed
Seeded: PermissionsTableSeeder
Seeded: RolesTableSeeder
Seeded: UsersTableSeeder

如果有同学遇到了类似的问题了 记得clear一下。

总之在配置文件没有问题的情况下执行下面的命令就OK
php artisan config:clear
php artisan cache:clear

Laravel学习笔记

手动创建的文件 用下面的命令引入

报错:

解决方法:
执行下面命令,与Linux有关

linux下载工具wget参数介绍(留做备用)

Linux下载工具Wget常用参数

启动:

日志记录及输入文件:

下载:

目录:

HTTP 选项:

HTTPS (SSL) 选项:

FTP 选项:

递归下载:

递归下载时有关接受/拒绝的选项:

Laravel中的调试技巧

1. 使用dd()函数,将感兴趣的数据输出到浏览器上,快速查看变量的内容

$items = array( 'items' => ['Pack luggage', 'Go to airport', 'Arrive in San Juan']);
dd($items);

2.使用Log输出感兴趣的信息,Log信息会记录到storage/logs/laravel.log文件中,可以使用Debugbar等查看Log信息

\Log::debug($items);
\Log::info('Just an informational message.');
\Log::warning('Something may be going wrong.');
\Log::error('Something is definitely going wrong.');
\Log::critical('Danger, Will Robinson! Danger!');

可以使用tail -f 命令查看storage/logs/laravel.log文件中加入的log信息

3.还可以通过集成FirePHP,使用Firebug控制台输出log信息
可以直接使用火狐添加FirePHP和Firebug控件

$monolog = \Log::getMonolog();
$items = ['Pack luggage', 'Go to airport', 'Arrive in San Juan'];
$monolog->pushHandler(new \Monolog\Handler\FirePHPHandler());
$monolog->addInfo('Log Message', array('items' => $items));

这样Log信息就可以在火狐浏览器的控制器中查看到

4.使用Laravel Debugbar
安装Laravel Debugbar

composer require barryvdh/laravel-debugbar

在config/app.php中配置providers和aliases

'providers' => [
'Debugbar' => 'Barryvdh\Debugbar\Facade'
]
'aliases' => [
'Debugbar' => 'Barryvdh\Debugbar\Facade'
]

安装包配置到config文件夹

php artisan vendor:publish

在后台输出Debug信息

\Debugbar::error('Something is definitely going wrong.');

可以使用debug, info, notice, warning, error, critical, alert和emergency等Debug信息等级

Vagrant Homestead 开发环境部署 无法读取本地 box

我通过wget已经成功下载了box,这个box一开始的时候也成功在mac上运行了,box应该是没有问题的.

然后git clone了Homestead下来,然后通过bash init.sh创建了homestead.yaml 在默认的配置下在Homestead目录下进行vagrant up,但是没法获取本地的box,会自动到网络服务器是下载:

这个问题是因为Homestead更新为最新版本为0.4.0了。

原因:

用wget下载回来的virtualbox.box虽然是0.4的,但是在vagrant box list 中显示为 0 在下载回来的homestead默认的配置中就会出现错误。

方法:

在clone回来的Homestead\scripts\文件夹中,打开homestead.rb文件

config.vm.box_version = settings[“version”] ||= “>= 0.4.0”改为 config.vm.box_version = settings[“version”] ||= “>= 0”

在Mac OS X中开启或关闭显示隐藏文件命令

打开终端,输入:

命令运行之后需要重新加载Finder:快捷键option+command+esc,选中Finder,重新启动即可