Laravel:系统登录后的跳转

Laravel 自带的 Auth,在登陆或注册成功后,会跳转到 /home, 但是我们的项目有时会划分前、后台,而只有后台需要登陆,则需要修改跳转路径到后台根目录,在Controllers\Auth 目录下,修改 LoginController.phpRegisterController.php,ResetPasswordController.php 中的 $redirectTo 参数:

1
protected $redirectTo = '/admin';

但还是没有完成,比如我们在浏览器中打开系统后台,会跳转到登录界面,输入账号密码登陆,成功后,我们不退出系统,不关闭浏览器,只关闭当前标签页(实际操作中就可能出现这种情况),还没做事呢!于是重新打开系统,这次不会出现登陆界面,因为我们已登录了, session 还没过期,但是也没有正常进入后台,而是跳转到了 /home,所以我们还需做一点修改,在 Middleware 目录下,有 RedirectIfAuthenticated.php 这个文件,根据名称可以看出,是用来控制系统已经登陆后的跳转,修改文件中的跳转路径:

1
2
3
if (Auth::guard($guard)->check()) {
return redirect('/admin');
}

PhpStorm 从已有文件创建项目

从欢迎页开始创建:

从主页面开始创建:

接下来为了简便期间,可以选择最后一项,然后点击Next,
主要是这里,按图片上标示的顺序操作即可:

如上图,先在文件目录中选择项目文件,然后设置为Project Root,Next 按扭变为可用,点击即可。

Setup is unable to find the "ifconfig" program on your machine

VMware 安装 Ubuntu,之后安装 VMware Tools ,安装过程中可能遇到如下提示:

Setup is unable to find the "ifconfig" program on your machine. Please make sure it is installed. Do you want to specify the location of this program by hand? [yes]

输入 yes ,按 Enter 键确认,或直接 按 Enter 键,则会有如下提示:

What is the location of the "ifconfig" program on your machine?

Enter 键,会有如下提示:

The answer "" is invalid. It must be the complete name of a binary file.
不能正常安装。

输入 no ,按 Enter 键,则会有如下提示:

Unable to continue. Execution aborted.
直接退出安装。

** 解决办法 :**

运行以下命令安装 ifconfig

1
sudo apt install net-tools

然后再次安装 VMware Tools 即可。

Android 之 DatePickerDialog

DatePickerDialog 用来设置日期。基本用法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Calendar mCalendar = Calendar.getInstance();
//格式化日期
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

DatePickerDialog pickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {

@Override
public void onDateSet(DatePicker arg0, int year, int month, int day) {
mCalendar.set(year, month, day);//将点击获得的年月日获取到calendar中。
Toast.makeText(this, format.format(mCalendar.getTime()),Toast.LENGTH_LONG).show();
}
},mCalendar.get(Calendar.YEAR), mCalendar.get(Calendar.MONTH), mCalendar.get(Calendar.DAY_OF_MONTH));
//设置最大可选日期
pickerDialog.getDatePicker().setMaxDate((new Date()).getTime());
pickerDialog.show();

把上述代码放在 viewclick 时间监听中便可触发,并且默认选择的日期是当前日期。

但在实际应用中,我们可能需要默认显示的是传来的值,如生日等,如何做?

上面代码中,在实例化 DatePickerDialog 时传入的 mCalendar.get(Calendar.YEAR), mCalendar.get(Calendar.MONTH), mCalendar.get(Calendar.DAY_OF_MONTH) ,便是用来设置默认选择的日期,我们可以把传来的日期转化为 Calendar 对象即可,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Calendar mCalendar = Calendar.getInstance();
//格式化日期
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

String str = "1988-11-11"; //这是可以是传来的日期,也可从 `view`获取
if (str != null){
try {
Date date = format.parse(str);
mCalendar.setTime(date);
} catch (ParseException e) {
e.printStackTrace();
}
}

DatePickerDialog pickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {

@Override
public void onDateSet(DatePicker arg0, int year, int month, int day) {
mCalendar.set(year, month, day);//将点击获得的年月日获取到calendar中。
Toast.makeText(this, format.format(mCalendar.getTime()),Toast.LENGTH_LONG).show();
}
},mCalendar.get(Calendar.YEAR), mCalendar.get(Calendar.MONTH), mCalendar.get(Calendar.DAY_OF_MONTH));
//设置最大可选日期
pickerDialog.getDatePicker().setMaxDate((new Date()).getTime());
pickerDialog.show();

打开日期对话框时,默认选择的便是 1988-11-11

Ubuntu 搭建 git server

假设服务器 ip 地址为 192.168.1.1

1、安装 git:

1.1 安装:

1
2
sudo apt-get update
sudo apt-get install git-core

1.2 创建 git 仓库目录:

1
2
cd /home
mkdir git

1.3 创建密钥存放目录:

1
2
cd /home/git
mkdir .ssh

2、新建 git 用户,用来管理 git 服务:

1
sudo adduser git

3、创建证书登陆:

3.1 安装 openssh-server:

1
sudo apt-get install openssh-server

通过命令 s –e|grep ssh ,查看ssh服务是否启动(是否安装成功)

3.2 在本机(客户端)生成证书:

我用的是 Windows, 打开 git bash,用如下命令生成:

1
ssh-keygen –t rsa 

C:\Users\用户名\.ssh 目录可看到:

1
2
id_rsa.pub     #公钥
id_ras #私钥

3.3 把证书上传到 git 服务器:

C:\Users\用户名\.ssh 目录下打开 git bash:

1
scp id_rsa.pub root@192.168.1.1:/home/git/.ssh

3.4 服务器端密钥配置:

进入 /home/git/.ssh 目录:

1
cd /home/git/.ssh

如果 authorized_kesys 不存在,则重新生成:

1
touch authorized_kesys

将客户端上传的公钥id_rsa.pub的内容追加到authroized_keys中:

1
cat id_rsa.pub >> authorized_keys

4、初始化 git 仓库:

修改git目录的用户/用户组:

1
sudo chown -R git:git git

初始化:

1
2
3
cd /home/git

sudo git init --bare sample.git

5、禁用 shell 登陆:

打开 /etc/passwd 文件,找到 git用户,把 git:x:1000:1000::/home/git: 修改为:

1
git:x:1000:1000::/home/git:/usr/bin/git-shell

6、克隆仓库:

在客户端打开 git bash:

1
git clone git@192.168.1.1:/home/git/sample.git

结束!!!


资料参考:

搭建Git服务器 - 廖雪峰
在 Ubuntu 系统中部署 Git Server
如何在Ubuntu上几步搭建Git Server
Ubuntu上搭建Git服务器
ssh证书登录(实例详解)

php artisan route:list Call to undefined function Yajra\Pdo\oci_connect()

Laravel 框架中用 yajra/laravel-oci8 链接 Oracle 数据库,查询数据没问题,但是当运行 php artisan route:list 命令时会报错:

1
2
3
4
5
C:\wamp64\www\stat2>php artisan route:list

[Symfony\Component\Debug\Exception\FatalThrowableError]
Call to undefined function Yajra\Pdo\oci_connect()

** 原因: ** CLI 模式下没有开启 oci8 扩展

我在 Windows 上用 WAMPServer 配置的 PHP 开发环境。

在浏览器中访问 http://localhost/?phpinfo=1 ,可找到如下内容:

1
2
Configuration File (php.ini) Path	C:\Windows
Loaded Configuration File C:\wamp64\bin\apache\apache2.4.23\bin\php.ini

加载的配置文件是C:\wamp64\bin\apache\apache2.4.23\bin\php.ini

CLI模式下:

1
2
3
4
5
C:\wamp64\www\stat2>php --ini
Configuration File (php.ini) Path: C:\Windows
Loaded Configuration File: C:\wamp64\bin\php\php7.0.10\php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed: (none)

加载的配置文件是 C:\wamp64\bin\php\php7.0.10\php.ini

打开两个文件可发先它们开启的扩展是不一样的

** 解决办法: **

C:\wamp64\bin\php\php7.0.10\php.ini 文件中开启 oci8 扩展

1
2
3
extension=php_oci8_12c.dll
;如果需要使用PDO
extension=php_pdo_oci.dll

Windows 下 VisualSVN 配置钩子(post-commit)

在实际项目中,一般都要用到版本控制工具。这篇文章是关于版本控制工具 VisualSVN,对于网站(在线系统)类项目,我们在 commit 的同时,也希望新提交的代码能自动部署到服务器目录,便要用到钩子(hook)功能,具体配置的是 post-commit,如下图:

在 windows server 服务器安装 VisualSVN server 服务端和 TortoiseSVN客户端,创建 repository,略过不提。

在项目名称点击鼠标右键,选择“Properties”->选择“Hooks”选项卡,选中 “Post-commit hook” ,点击 “Edit”,编辑内容如下:

1
2
3
4
5
6
7
@echo off  
SET REPOS=%1
SET REV=%2
SET DIR=%REPOS%/hooks
SET PATH=%PATH%;
SET WORKING_COPY="C:/wamp64/www/test"
svn update %WORKING_COPY% --username username --password password

其中, WORKING_COPY 是项目在服务器(这里指如Apache、Nginx等web服务器)中的目录,并且是svn目录,这里要做的是:右键,签出(checkout)项目,而不是右键新建目录,这也是为何要安装TortoiseSVN的原因。

这是,在自己的电脑上新建、修改文件,然后提交到版本库,可能出现如下错误:

1
2
3
4
5
post-commit hook failed (exit code 1) with output:
svn: E155004: Working copy 'C:\wamp64\www\test' locked
svn: E200031: sqlite: attempt to write a readonly database
svn: E200031: sqlite: attempt to write a readonly database
svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for details)

**原因:**Visual SVN Server服务的执行权限不够,不能对指定目录做读写操作。

解决办法:,修改Visual SVN Server 权限

 按 `win+R`快捷键,  在运行窗口中输入` services.msc`, 回车,在弹出的“服务”窗口中, 找到visual svn server 服务 ,右键属性 ,先停止服务之后,设置如下:

WAMP: You don't have permission to access on this server.

新安装的 WAMP ,在其他电脑访问时,会出现 403错误:

1
2
Forbidden 
You don't have permission to access on this server.

解决办法:

在安装目录 盘符:\wamp64\bin\apache\apache2.4.23\conf\extra 中找到 httpd-vhosts.conf文件:

1
2
3
4
5
6
7
8
9
VirtualHost *:80>
ServerName localhost
DocumentRoot d:/wamp64/www
<Directory "d:/wamp64/www/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require local
</Directory>
</VirtualHost>

修改为:

1
2
3
4
5
6
7
8
9
VirtualHost *:80>
ServerName localhost
DocumentRoot d:/wamp64/www
<Directory "d:/wamp64/www/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>

Laravel Homestead 安装配置

1、安装 VirtualBox, Vagrant,git

下载 VirtualBoxVagrantgit,并安装。

2、安装 Homestead Vagrant Box

用如下命令直接下载安装:

1
vagrant box add laravel/homestead

上述方法安装不成功,可在百度网盘(链接:https://pan.baidu.com/s/1lA6TV2l9mwOIz2a1Yz5r3A
提取码:6irb ) 获取已下载好的 Homestead Vagrant Box,安装方法看下面:

3、安装 Homestead

安装:

1
2
cd ~
git clone https://github.com/laravel/homestead.git Homestead

由于 Homestead 的 master 分支并不是稳定分支,你应该检出已经标签过的稳定版本。你可以在 Github Release Page 找到最新的稳定版本:

1
2
3
cd Homestead

git checkout -b v5.3.2

如果需要安装下载好的 box,在 Homestead 目录,新建 metadata.json 文件,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"name": "laravel/homestead",
"versions":
[
{
"version": "2.0.0",
"providers": [
{
"name": "virtualbox",
"url": "E:/homestead/2.0/virtualbox.box"
}
]
}
]
}

url根据自己的实际目录修改。

然后用如下命令添加:

1
vagrant box add metadata.json

查看已安装的 box:

1
vagrant box list

初始化:

1
2
3
4
5
// Mac / Linux...
bash init.sh

// Windows...
init.bat

4、配置

  1. 生成SSH Key:

git bash 运行命令生成:

1
2
#引号中的信息自行修改
ssh-keygen -t rsa -C "xxxx@xxxx"
  1. 配置共享文件夹

打开 Homestead.yaml 文件(C:\Users\用户名\Homestead 或 C:\Users\用户名.homestead目录下):

1
2
3
4
5
folders:
- map: ~/Code
to: /home/vagrant/Code
- map: D:/phpweb/test
to: /home/vagrant/Code/test

复制原文件中的内容修改即可(注意对齐、空格等)

  1. 配置Nginx站点

打开 Homestead.yaml 文件:

1
2
3
4
5
sites:
- map: homestead.app
to: /home/vagrant/Code/Laravel/public
- map: test.app
to: /home/vagrant/Code/test/public
  1. 修改 hosts 文件:

添加如下内容:

1
192.168.10.10  test.app
  1. 修改数据库配置:

编修对应项目的 .env 文件:

1
2
3
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

5、测试、使用

  1. 启动 Vagrant Box
1
2
3
4
# 进入 Homestead 目录
cd Homestead
#启动
vagrant up
  1. 打开浏览器,访问 test.app, 若正常显示 Laravel 欢迎页,则配置成功。

  2. 通过 SSH 连接虚拟主机

1
vagrant ssh

项目列表:

1
ls