学习过程中的知识小结
* 路由问题
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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
// 错误的写法: 资源路由会覆盖后续的路由, 导致访问不成功 // 资源路由 Route::resource('user', 'UserController'); // 分组路由 Route::group(['prefix' => 'user'], function(){ Route::get('showByName', 'UserController@showByName'); }); // 正确的写法: 把所有路由写在资源路由前面 // 分组路由 Route::group(['prefix' => 'user'], function(){ Route::get('showByName', 'UserController@showByName'); }); // 资源路由 Route::resource('user', 'UserController'); ``` *** * 总结 > * 公共的一般放在`common`目录下 > * 别用`dd()`打印`session`, 会导致`session`无法正确存储 > * `asset()`会去找相对于`index.php`目录下的文件, 默认是`laravel/public`的绝对路径 > * `url()` 参数是路由名字 > * `route()`参数是路由的别名 > * `return redirect('')`参数是路由或者完整url, > * `return redirect()->route('')`参数是路由别名 * Model > * `Model::all()` 取得所有记录 > * `Model::where('id', '>', 9)->get()` 取得符合条件的所有记录 > * `Model::where('id', '>', 9)->first()` 取得符合条件的第一条记录 > * `Model::save`不生效,如果你数据库的主键是`Id`改成`id`即可 * `php artisan` > * `php artisan make:controller Controller --resource` 加上`--resource` 可以自动创建资源控制器默认的方法 > * `php artisan route:list` 查看所有路由 > * `php artisan make:auto` 生成一个登录注册 > * `php artisan serve --port=80` 用80端口开启服务环境 > * `php artisan make:Postcontroller --model=Post` 生成模型控制器 > * `php artisan make:model User -a` 会生成`Resource Controller`,`Migration`,`Factory`,`Model` * 问题关键字 > * `ErrorException include(F:\root\laravel): failed to open stream: Permission denied` > * 这个问题是由于权限不足导致的, 多数是`Linux`用户, Linux用户的只要修改一下目录权限就可以了, 而我用`windowns`也遇到了,我电脑有两个用户,一个`administrator`,一个`user`,我是使用`user`开发的,所以会造成权限不足,解决方法:**右击项目文件->属性->安全->上方选择当前电脑用户->下方修改权限允许** > *** > * 表单提交后保留旧数据 > * 控制器:`return back()->withInput();` > * 视图层:`<input type="text" name="username" value="{{ old('username') }}" />` > * 邮件发送报错,`ErroeException:Missing argument 1 for Illuminate\Support\Manager::createDriver()` 我的是因为源码有错误,把`vender`目录删除掉,执行`composer update`即可 *** * MySQL * > 注意数据表的引擎`MyISAM`引擎不支持外键和**事务**,想用的话改成`InnoDB` ### 模型关联预加载 ```php public function index() { $user = User::where('user', session('user'))->first(); // 查询状态为1 当前用户的购物车 ->with('') $ware = Car::where('user_id', $user->id)->where('status', 1)->with('ware')->get(); dd($ware); // return view('user.car', ['cars' => $cars]); } |
- 登陆后跳转到登录前的页面?
-
跳转之前,获取当前
URL
,拼接到GET
参数,跳转到登录页面时就变成http://domain.com/login.php?url=detail.php
, 到登录页面时, 判断有没有GET
参数, 如果有, 登录成功后就跳转到之前的页面
-
Laravel 是怎么实现路由不用带命名空间调用的?
-
使用
class_alias()
函数,可以为类起别名,通过别名调用类。
- 运行
PHP
命令行,提示XXX模块未加载,可能是修改了PHP
相关文件夹目录名字,但是php.ini
中的extension_dir
还没有修改
2018-2-26 更新
PHP
Laravel
- 知识点
php artisan make:model User -a
会生成Resource Controller
,Migration
,Factory
,Model
Linux
- 刚买好的云服务器需要配置SSH允许远程连接(腾讯云通过VNC设置)
- 查看 ssh 服务是否启动
systemctl status sshd.service
- 安装ssh
yum install ssh
- 启动ssh服务器端
service sshd start
- 开机自启动
chkconfig sshd on
- 在文件最后面另起一行添加
AllowUsers root
- 重启ssh
service sshd restart
- 硬盘分区与挂载
- 创建分区
- 查看磁盘状态
fdisk -l
- 对未使用的进行分区操作
fdisk /dev/vdb1
- 分区默认操作基本就可以
- 创建文件系统
- 查看是否有文件系统
df -h
- 为分区好的磁盘创建文件系统
mke2fs -t ext4 /dev/vdb1
- 创建好之后使用
df -h
还是看不到的,还需要挂载
- 挂载
mount /dev/vdb1 /mnt
- 取消挂载
umount /mnt
- 创建分区
- 搭建 Laravel 环境
- 安装 nginx (-y 可以默认选择y, 不需要再手动输入y确认安装)
yum install nginx -y
- 修改 /etc/nginx/conf.d/default.conf,去除对 IPv6 地址的监听
12345678910111213141516171819202122232425262728293031323334{listen 80 default_server;# 注释下面这行# listen [::]:80 default_server;server_name _;root /usr/share/nginx/html;# Load configuration files for the default server block.include /etc/nginx/default.d/*.conf;location / {index index.html index.htm index.php l.php;autoindex off;try_files $uri $uri/ /index.php?$query_string;}location ~ .php$ {root /usr/share/php;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}error_page 404 /404.html;location = /40x.html {}error_page 500 502 503 504 /50x.html;location = /50x.html {}}- 启动 nginx
systemctl start nginx
- 开机启动
systemctl enable nginx
- 安装 MySQL
yum install mariadb-server -y
- 安装完成后,启动 MySQL 服务:
systemctl start mariadb
设置 MySQL 账户 root 密码
/usr/bin/mysql_secure_installation
- 将 MySQL 设置为开机自动启动
systemctl enable mariadb
- 安装 PHP 及相关依赖(由于默认的 yum 源 php 版本低于 Laravel 要求,所以需要添加第三方源:)
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
yum -y install mariadb-server php71w php71w-fpm php70w-mysql php71w-mcrypt php71w-dom php71w-mbstring
yum update -y
yum install php71w php71w-fpm php71w-cli php71w-common php71w-gd php71w-mbstring php71w-mcrypt php71w-pdo php71w-xml mariadb-server
- 安装 composer
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
- 设置环境变量(建议全局设置)
export PATH=$PATH:/root/.config/composer/vendor/bin
- 为了避免 composer 安装应用过程中出现内存不足的问题,我们预先设置一下 swap
/bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
/sbin/mkswap /var/swap.1
/sbin/swapon /var/swap.1
- 配置 php-fpm
- 查看占用
netstat -nlpt | grep php-fpm
- 启动php-fpm
systemctl start php-fpm
- 设置为开机自启动
systemctl enable php-fpm
- 配置站点
123456789101112131415161718server {listen 80;server_name _;root /var/www/html;index index.php index.html index.htm;location / {try_files $uri $uri/ /index.php?$query_string;}location ~ .php$ {fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}} - 安装 nginx (-y 可以默认选择y, 不需要再手动输入y确认安装)
- 任务加入后台nohup
nohup php artisan queue:work --tries=3
- Nginx
- 启动 nginx
- nginx -c /etc/nginx/nginx.conf
- 重启
- nginx -s reload
- 关闭
- nginx -s stop
- Crontab
- 检查服务
crontab -l
- 没有则使用
yum
安装 yum -y install vixie-cron crontabs
- 命令格式
crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
- 命令参数
-u user
:用来设定某个用户的crontab服务;file
: file 是命令文件的名字,表示将file做为crontab的任务列表文件并载入 crontab。如果在命令行中没有指定这个文件,crontab 命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab*。-e
:编辑某个用户的crontab 文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。-l
:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。-r
:从/var/spool/cron 目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。-i
:在删除用户的crontab文件时给确认提示。
- 文件格式
“`
minute hour day month week command
# For details see man 4 crontabs
# Example of job definition:
.———————————- minute (0 – 59) 表示分钟
| .——————————- hour (0 – 23) 表示小时
| | .—————————- day of month (1 – 31) 表示日期
| | | .————————- month (1 – 12) OR jan,feb,mar,apr … 表示月份
| | | | .———————- day of week (0 – 6) 表示星期(0 或 7 表示星期天)
| | | | | .——————- username 以哪个用户来执行
| | | | | | .—— command 要执行的命令,可以是系统命令,也可以是自己编写的脚本文件
| | | | | | |<ul>
<li>
<ul>
<li>
<ul>
<li>
<ul>
<li>
<ul>
<li>user-name command to be executed
“`
- 检查服务
- 每分钟执行一次命令
* * * * * command
- 每十分钟执行一次
*/10 * * * * command
- 每小时执行一次命令
* */1 * * * command
# 编辑 crontab
crontab -e
# 删除所有 crontab
crontab -r
| 任务 | 旧指令 | 新指令 |
|——————-|——————————-|——————————————————|
| 使某服务自动启动 | chkconfig –level 3 httpd on | systemctl enable httpd.service |
| 使某服务不自动启动 | chkconfig –level 3 httpd off | systemctl disable httpd.service |
| 检查服务状态 | service httpd status | systemctl status httpd.service(服务详细信息) |
| 检查服务状态 | service httpd status | systemctl is-active httpd.service (仅显示是否 Active) |
| 显示所有已启动的服务 | chkconfig –list | systemctl list-units –type=service |
| 启动某服务 | service httpd start | systemctl start httpd.service |
| 停止某服务 | service httpd stop | systemctl stop httpd.service |
| 重启某服务 | service httpd restart | systemctl restart httpd.service |
xshell
互传文件yum install lrzsz
- 下载文件
sz $filename
- 上传文件
rz $filename
Git
- 使用
yum
安装yum install git
- 使用源码安装
- 安装依赖库
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
- 安装编译工具
yum install gcc perl-ExtUtils-MakeMaker
- 下载 Git
- 选一个目录,用来放下载下来的安装包,这里将安装包放在
/usr/local/src
目录里 cd /usr/local/src
- 选择一个源码包下载
wget https://www.kernel.org/pub/software/scm/git/git-2.10.0.tar.gz
- 解压源码包
tar -zvxf git-2.10.0.tar.gz
- 解压后进入 git-2.10.0 文件夹
cd git-2.10.0
- 执行编译
make all prefix=/usr/local/git
- 编译完成后, 安装到 /usr/local/git 目录下
make install prefix=/usr/local/git
- 将 git 目录加入 PATH
echo 'export PATH=$PATH:/usr/local/git/bin' >> /etc/bashrc
- 生效环境变量
source /etc/bashrc
- 选一个目录,用来放下载下来的安装包,这里将安装包放在
HTTP 错误
1 2 3 4 5 6 |
* 403 * 没有配置默认首页 * 权限不足 * 502 * php-fpm 配置错了 |