ForoneTech / ForoneAdministrator

基于Laravel5.1封装的自带多级权限管理的后台管理系统,支持手机和PC端访问
443 stars 118 forks source link

新手请教一下安装流程 #10

Closed lidelin closed 8 years ago

lidelin commented 8 years ago

请教一下以下的安装步骤,是否正确?

1.git clone https://github.com/ForoneTech/ForoneAdministrator.git

2.修改ForoneAdministrator目录下的composer.json,添加以下代码 "repositories": [ {"type": "git", "url": "https://github.com/ForoneTech/ForoneAdmin.git"}, {"type": "composer", "url": "http://packagist.phpcomposer.com"}, {"packagist": false} ],

  1. 在ForoneAdministrator目录下输命令 sudo composer require forone/administrator:~1.0.0

最后提示以下信息: ./composer.json has been updated Loading composer repositories with package information Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

Problem 1

Potential causes:

Read https://getcomposer.org/doc/articles/troubleshooting.md for further common problems.

Installation failed, reverting ./composer.json to its original content.

okchum commented 8 years ago

先 clone laravel 的库在 laravel 库根目录 composer.json 增加

"repositories": [
  {"type": "git", "url": "http://git.forone.co/mani/ForoneAdministrator.git"},
  {"type": "composer", "url": "http://packagist.phpcomposer.com"},
  {"packagist": false}
],
"minimum-stability" : "dev"

注意 json 文件的格式

然后在当前目录 composer install,修改 app.php 文件 跟着 Readme 的安装步骤基本就可以用了。

lidelin commented 8 years ago

@kchum 感谢指导.

我按以下步骤试了一下,最后遇到404 Not Found,你之前有遇到过吗?

1) git clone -b 5.1 https://github.com/laravel/laravel.git ForoneTest

2) 在 ForoneTest 库根目录 composer.json 增加 "repositories": [ {"type": "git", "url": "https://github.com/ForoneTech/ForoneAdmin.git"}, {"type": "composer", "url": "http://packagist.phpcomposer.com"}, {"packagist": false} ], "minimum-stability" : "dev"

3) sudo composer install

4) sudo composer require forone/administrator:~1.0.0

5) 编辑 config/app.php 注册 providers 和 aliases

'providers' => [ Forone\Admin\Providers\ForoneServiceProvider::class ] 'aliases' => [ 'Form' => Illuminate\Html\FormFacade::class, 'Html' => Illuminate\Html\HtmlFacade::class, 'Entrust' => Zizaco\Entrust\EntrustFacade::class ] 发布资源,运行下面命令会自动生成默认的配置文件并复制静态文件和数据库文件

php artisan vendor:publish 修改.env通过环境变量设置初始管理员账号密码

ADMIN_EMAIL默认为admin@admin.com ADMIN_PASSWORD默认为admin

系统初始化

php artisan forone:init

############################################################### 为App\User添加Entrust的Trait,以便使用一些封装的方法

use Authenticatable, CanResetPassword, EntrustUserTrait; 使用EntrustUserTrait的时候注意需要引入该类:

use Zizaco\Entrust\Traits\EntrustUserTrait; ###############################################################

以上这段不是很懂什么意思... 在app/User.php 上面加 use Authenticatable, CanResetPassword, EntrustUserTrait; 这一句会有错误

6) 修改配置 修改config/forone.php,把'site_config'改成 'site_config' => [ 'site_name' => 'http://hbe.io/', 'title' => 'http://hbe.io/', 'description' => 'you site description', 'logo' => 'vendor/forone/images/logo.png' ],

7) 配置nginx,设置root到 ForoneTest/public 目录,端口号为10

最后在浏览器输入 http://hbe.io:10,会自动跳转到http://hbe.io:10/admin/auth/login,但是会显示404 Not Found

okchum commented 8 years ago

这个我印象中是因为 laravel 升级也写了一些方法导致冲突,用这个后台框架就别用那几个 Trait 先,等升级吧。

  • 显示404 Not Found

你应该映射到 laravel/public 而不应该是 ForoneTest/public 这是 Laravel 的基础知识。

lidelin commented 8 years ago

@kchum 我把laravel目录重命名为ForoneTest了

okchum commented 8 years ago

囧。 那可以试试换 80 端口之类的。或者修改对应的路由进一步测试。

Anita99Zhang commented 8 years ago

laravel5.1.1的user.php引用的接口和Entrust类 的can方法有冲突,所以app下面的user.php要使用laravel5.1之前的,

class User extends Model implements AuthenticatableContract, CanResetPasswordContract { use Authenticatable, CanResetPassword;

/**
 * The database table used by the model.
 *
 * @var string
 */
protected $table = 'clients';

/**
 * The attributes that are mass assignable.
 *
 * @var array
 */
protected $fillable = ['tel', 'password'];

/**
 * The attributes excluded from the model's JSON form.
 *
 * @var array
 */
protected $hidden = ['password'];

}

这是旧版的user.php。替换新的user.php

lidelin commented 8 years ago

@kchum 改成80也会跳到http://hbe.io/admin/auth/login之后显示 404 Not Found. 囧~ 请教一下,除了.env的APP_DEBUG,还有其他地方可以开打印信息吗? 谢谢~

okchum commented 8 years ago

404 是 Nginx(Apache) 还是 Laravel 的? 如果是 Nginx(Apache) 那就是 Url rewrite 写得不对, 可以看下 这里Pretty URLs

lidelin commented 8 years ago

@kchum 在nginx 加上 location / { try_files $uri $uri/ /index.php?$query_string; } 然后再把目录权限改成777就可以了...

但是登录,跳到http://hbe.io/admin/roles之后,就报了一堆错... Orz..

in Gate.php line 321 at HandleExceptions->handleError('2', 'Illegal offset type in isset or empty', '/home/lidelin/project/lnmp/laravel-v5.1.11/vendor/laravel/framework/src/Illuminate/Auth/Access/Gate.php', '321', array('user' => object(User), 'ability' => array('admin'), 'arguments' => array())) in Gate.php line 321 at Gate->resolveAuthCallback(object(User), array('admin'), array()) in Gate.php line 265 at Gate->callAuthCallback(object(User), array('admin'), array()) in Gate.php line 243 at Gate->raw(array('admin'), array()) in Gate.php line 199 at Gate->check(array('admin'), array()) in Authorizable.php line 18 at User->can(array('admin')) in EntrustPermission.php line 25 at EntrustPermission->handle(object(Request), object(Closure), 'admin') at call_user_func_array(array(object(EntrustPermission), 'handle'), array(object(Request), object(Closure), 'admin')) in Pipeline.php line 124 at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in Authenticate.php line 45 at Authenticate->handle(object(Request), object(Closure)) at call_user_func_array(array(object(Authenticate), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 at Pipeline->Illuminate\Pipeline{closure}(object(Request)) at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103 at Pipeline->then(object(Closure)) in Router.php line 710 at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 675 at Router->dispatchToRoute(object(Request)) in Router.php line 635 at Router->dispatch(object(Request)) in Kernel.php line 236 at Kernel->Illuminate\Foundation\Http{closure}(object(Request)) at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139 at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in VerifyCsrfToken.php line 50 at VerifyCsrfToken->handle(object(Request), object(Closure)) at call_user_func_array(array(object(VerifyCsrfToken), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in ShareErrorsFromSession.php line 49 at ShareErrorsFromSession->handle(object(Request), object(Closure)) at call_user_func_array(array(object(ShareErrorsFromSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in StartSession.php line 62 at StartSession->handle(object(Request), object(Closure)) at call_user_func_array(array(object(StartSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37 at AddQueuedCookiesToResponse->handle(object(Request), object(Closure)) at call_user_func_array(array(object(AddQueuedCookiesToResponse), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in EncryptCookies.php line 59 at EncryptCookies->handle(object(Request), object(Closure)) at call_user_func_array(array(object(EncryptCookies), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in CheckForMaintenanceMode.php line 44 at CheckForMaintenanceMode->handle(object(Request), object(Closure)) at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 at Pipeline->Illuminate\Pipeline{closure}(object(Request)) at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103 at Pipeline->then(object(Closure)) in Kernel.php line 122 at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 87 at Kernel->handle(object(Request)) in index.php line 54

lidelin commented 8 years ago

app/User.php 是这样的,

<?php

namespace App;

use Illuminate\Auth\Authenticatable; use Illuminate\Database\Eloquent\Model; use Illuminate\Auth\Passwords\CanResetPassword; use Illuminate\Foundation\Auth\Access\Authorizable; use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;

class User extends Model implements AuthenticatableContract, AuthorizableContract, CanResetPasswordContract { use Authenticatable, Authorizable, CanResetPassword;

/**
 * The database table used by the model.
 *
 * @var string
 */
protected $table = 'users';

/**
 * The attributes that are mass assignable.
 *
 * @var array
 */
protected $fillable = ['name', 'email', 'password'];

/**
 * The attributes excluded from the model's JSON form.
 *
 * @var array
 */
protected $hidden = ['password', 'remember_token'];

}

文档里面的这一段 ################################################# 为App\User添加Entrust的Trait,以便使用一些封装的方法

use Authenticatable, CanResetPassword, EntrustUserTrait; 使用EntrustUserTrait的时候注意需要引入该类:

use Zizaco\Entrust\Traits\EntrustUserTrait; #################################################

还是不知道咋改...

okchum commented 8 years ago

建议你用5.1.* 版本,5.2 我还没试过

lidelin commented 8 years ago

@kchum 我用5.1.11试的,是不是一定要5.1.4?

lidelin commented 8 years ago

@kchum 用5.1.4还是不行...Orz..

BadMethodCallException in Builder.php line 2099: Call to undefined method Illuminate\Database\Query\Builder::can() in Builder.php line 2099 at Builder->call('can', array(array('admin'))) at Builder->can(array('admin')) at call_user_func_array(array(object(Builder), 'can'), array(array('admin'))) in Builder.php line 947 at Builder->__call('can', array(array('admin'))) at Builder->can(array('admin')) at call_user_func_array(array(object(Builder), 'can'), array(array('admin'))) in Model.php line 3497 at Model->call('can', array(array('admin'))) in EntrustPermission.php line 25 at User->can(array('admin')) in EntrustPermission.php line 25 at EntrustPermission->handle(object(Request), object(Closure), 'admin') at call_user_func_array(array(object(EntrustPermission), 'handle'), array(object(Request), object(Closure), 'admin')) in Pipeline.php line 124 at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in Authenticate.php line 45 at Authenticate->handle(object(Request), object(Closure)) at call_user_func_array(array(object(Authenticate), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 at Pipeline->Illuminate\Pipeline{closure}(object(Request)) at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103 at Pipeline->then(object(Closure)) in Router.php line 710 at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 675 at Router->dispatchToRoute(object(Request)) in Router.php line 635 at Router->dispatch(object(Request)) in Kernel.php line 236 at Kernel->Illuminate\Foundation\Http{closure}(object(Request)) at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139 at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in VerifyCsrfToken.php line 50 at VerifyCsrfToken->handle(object(Request), object(Closure)) at call_user_func_array(array(object(VerifyCsrfToken), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in ShareErrorsFromSession.php line 49 at ShareErrorsFromSession->handle(object(Request), object(Closure)) at call_user_func_array(array(object(ShareErrorsFromSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in StartSession.php line 62 at StartSession->handle(object(Request), object(Closure)) at call_user_func_array(array(object(StartSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37 at AddQueuedCookiesToResponse->handle(object(Request), object(Closure)) at call_user_func_array(array(object(AddQueuedCookiesToResponse), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in EncryptCookies.php line 59 at EncryptCookies->handle(object(Request), object(Closure)) at call_user_func_array(array(object(EncryptCookies), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in CheckForMaintenanceMode.php line 44 at CheckForMaintenanceMode->handle(object(Request), object(Closure)) at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124 at Pipeline->Illuminate\Pipeline{closure}(object(Request)) at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103 at Pipeline->then(object(Closure)) in Kernel.php line 122 at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 87 at Kernel->handle(object(Request)) in index.php line 54

okchum commented 8 years ago

我今晚试试, 另外建议使用 homestead 不会遇到由于环境搭配的错误。

lidelin commented 8 years ago

@kchum 不熟悉homestead,我是直接在ubuntu上试的

mani95lisa commented 8 years ago

@Johnny-Li 还有问题吗?刚看到呢

lidelin commented 8 years ago

@mani95lisa ( ⊙o⊙ ) 一直都没成功...

mani95lisa commented 8 years ago

@Johnny-Li 你这个可能是步骤出错了,是不是User里没有 use Zizaco\Entrust\Traits\EntrustUserTrait; 所以导致调用can方法失败?

lidelin commented 8 years ago

@mani95lisa

为App\User添加Entrust的Trait,以便使用一些封装的方法

use Authenticatable, CanResetPassword, EntrustUserTrait; 使用EntrustUserTrait的时候注意需要引入该类:

use Zizaco\Entrust\Traits\EntrustUserTrait;

之前这一步没做对,现在可以了,感谢~

mani95lisa commented 8 years ago

@Johnny-Li 没事,有问题再沟通,最近一直没时间再更新这个库,最近几天可能会再更新。

lidelin commented 8 years ago

@mani95lisa 期待新更新...顺便问问新库会更新哪些东西?

mani95lisa commented 8 years ago

@Johnny-Li 看做多少了,应该会有些新组件 :smile: