4月7日:
1、composer干什么的?
composer 是 php的 依赖管理工具。
依赖:
A类 -> B类
在没有composer之前:
include a.class.php
include b.class.php
$obj = new A();
有了composer之后,composer会自动把需要的类加载进来。
$obj = new A();
2、Linux安装Composer:
1、下载php-composer,执行下列命令其中一个即可,下载成功之后会在目录下产生一个composer.phar的文件
(1)curl -sS https://getcomposer.org/installer | php
(2)php -r "readfile('https://getcomposer.org/installer');" | php
2、把composer移动到 /usr/sbin
mv composer.phar /usr/sbin/composer
添加权限:
chmod +x /usr/sbin/composer
3、输入composer 出现提示页面说明安装成功
composer -v
3、composer切换镜像源:
1、打开链接
https://developer.aliyun.com/composer
2、切换镜像源为阿里云
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
3、下载Laravel框架。
创建API的项目:
composer create-project --prefer-dist laravel/laravel api -vvv
创建H5的项目:
composer create-project --prefer-dist laravel/laravel h5 -vvv
4、可能会遇到的错误:
红色提示: proc_open 错误: 【 因为安全原因,proc_open函数被禁用了 】
解决:
(1)通过 find 找到php.ini
find / -name php.ini
(2) php的配置文件的目录在
/usr/local/php/etc/php.ini
(3) 打开php的配置文件
vim /usr/local/php/etc/php.ini
(4) 在vim的普通模式下 输入
/disable_functions
(5)点击回车搜索,在这一行前边加上 ;
保存退出 :wq
(6)重启php-fpm
killall phpf-fpm
/usr/local/php/sbin/php-fpm
Connection time out :
连接超时,把当前目录删除了,重新执行composer进行下载
5、php关于 disable_functions
指的是php的禁用函数。
system: 执行一些系统的命令
6、LNMP:
L: Linux
N: Nginx
M: MYSQL
P: php
LAMP:
L: Linux
A: Apache
M: MYSQL
P: php
7、Linux使用Nginx如何配置域名:
Nginx的安装路径:
/usr/local/nginx
Php的安装路径:
/usr/local/php
Mysql:
/usr/local/mysql
配置Nginx域名的过程: 【外网域名】
1、先把域名解析到阿里云的服务器上
2、在本地的命令行窗口 ping 一下 刚配置的域名
3、找到nginx的配置文件
/usr/local/nginx/conf/nginx.conf
4、在Nginx配置文件的最后添加,在{}中添加
include conf.d/*.conf;
【加载当前目录下的conf.d下的 以conf结尾的文件】
5、在/usr/local/nginx/conf/创建一个conf.d的目录
mkdir conf.d
6、在/usr/local/nginx/conf/conf.d目录下创建文件
vim 1908api.phpclub.top.conf
把一个完整的server 复制进去
7、修改server name 和 root
root 访问的目录,指定到laravel框架的public
server_name 配置成我们的域名
8、重启下我们的Nginx
/usr/local/nginx/sbin/nginx -t 【检查一下nginx配置是否正确】
/usr/local/nginx/sbin/nginx -s reload
9、访问一下我们的域名 出现laravel框架欢迎页面说明ok
8、阿里云域名解析:
记录类型:A 讲域名解析到ipv4的地址
CNAME 讲一个域名指向另外一个域名
9、服务器提示500错误,没有显示出来具体的错误信息,如何解决?
问题主要原因:
服务器没有开启php相关的报错。
如何解决: [在php.ini中需要修改配置]
1、 vim /usr/local/php/etc/php.ini
2、搜索 display_errors 【 是否显示php相关的错误 】
把配置项从 off 修改为 on
3、重启php-fpm
killall php-fpm
/usr/local/php/bin/php-fpm
laravel框架可能是 app_debug 没有开启,
(1)在laravel框架下找到 app_debug选项 把false 改成true
(2) 'env' => env('APP_ENV', 'dev'),
'debug' => (bool) env('APP_DEBUG', true ),
Linux命令:
# 查找文件的命令
find 目录 -name php.ini
# vim 搜索关键字
在普通模式下:
输入 /要搜索的内容
重启php-fpm
killall phpf-fpm
/usr/local/php/sbin/php-fpm
杀死进程:
killall 进程名字
查看进程使用
ps -ef | grep nginx
修改权限
chmod
修改用户组:
chgrp
修改所有者:
chown
查看端口使用情况
netstat -ntlpu
查看服务器的内存:
free
free -m 按照mb查看
free -g 按照gb查看
查看占用系统资源比较多的进程:
top命令
Linux下的文件都是归属用户的,而用户呢,归属于用户组。
这样的话话就意味着文件属于某个用户和某个用户组。
ll的时候可以看到文件的用户和用户组
d rwx r-x r-x 2 root root 4096 7月 18 2019 openssl
- rw- r-- r-- 1 root root 1802240 3月 23 2019 php-7.3.3.tar.gz
d 代表的是目录 (dir)
- 代表的是是一个文件 (file)
第一个root代表的是 所有者
第二个root代表的是 所属组
后边9个字母代表的是具体的权限:
rwx read write exec
4 2 1
其中三个三个一组:
前三个 rwx 自己的权限 【所有者、所属者】 u = user
中间三个 rwx 组内用户的权限 【所在组、所有组】 g = group
后三个 rwx 其他用户的权限 o = other
chmod 777 代表的是:
7代表的是 4 + 2 + 1
第一个7代表的是 自己的权限
第二个7代表的是 组内用户的权限
第三个7代表的是 其他用户的权限
chmod +x 给所有人都加上执行的权限
给组内用户加权限:
chmod g+x 文件名
4月8号:
apk: android application package
ipk: Ios application package
API基本认知:【应用程序接口】
application programing interface
php是运行在服务端的脚本语言。
客户端软件:
需要把安装包下载下来,安装在终端设备上。
为什么要写API接口?
因为客户端的程序,运行在客户端,如果要操作数据库,需要把数据库相关信息硬编码到程序中
而客户端的程序可能会被反编码【把代码解析回来】,数据库相关信息都会暴露出来,不安全、
所以客户端不允许直接访问mysql
为了解决这个问题,所以就产生了API接口。因为一般API都是运行在服务端的,服务端的脚本语言相对比较安全
客户端的程序通过 访问接口去访问数据库。
API可以用什么语言进行开发:
php、java、python、.net【asp】 、 nodejs、 go等等
使用接口开发的好处:
1、可以做到统一的修改,如果统一使用接口,可以直接修改接口,所有的地方都会跟着修改。
2、方便系统去创建一些安全策略、
3、接口可以实现统一的管理,数据都从接口出去。
4、移动互联网成为主流,客户端的程序,必须要使用到接口。
如何去写一个接口?
做接口之前的准备工作:
1、接口文档
(1)告诉别人如何调用你的接口
get post
是否需要加密、签名等等
(2)接口的用途
(3)接口的地址 http://api.com/user/login
(4)接口的请求方式 get post请求
(5)输入的参数
(6)返回的数据
(7)输入参数的一个实例
(8)能给出调用接口的实例代码
接口返回的数据: xml json
接口返回的数据,统一为JSON格式。
如何调用接口:
file_get_contents [用的比较多]
curl [用的比较多]
fopen
fsockopen
socket
给接口传递数据:
1、接口中的所有参数,必传参数必须传递
2、根据接口的请求方式,使用对应http请求方式吧数据传递到服务端
3、如果接口需要数据,需要吧数据拼接成数组格式,把所有的数据节点放入data中,把整个数据传递到API段,
API接受数据的时候,会直接取传递到数据下的 data节点
demo:
$arr = [
'user_name' => 'zhangsan',
'password' => '123456'
];
$api_request_arr['data'] = $arr;
同源策略:
A网站去请求B网站的接口。
为什么要有同源策略?
为了保证网站的安全,浏览器会限制我们的网站,发起请求只能请求本域名下的接口。
同源策略的要求:
(1)同域名
【
http://1908h5.phpclub.top/login
http://1908api.phpclub.top/login
】
(2)同端口
【http://1908h5.phpclub.top:80 http://1908h5.phpclub.top:81】
(3)同协议 ( http和https协议 )
http://1908h5.phpclub.top/login
https://1908h5.phpclub.top/login
跨域问题:
http://1908h5.phpclub.top/login它请求了另外一个域名【http://1908api.phpclub.top/login】下的接口。
主域名:
phpclub.top
一级域名:[ 域名前边是www这个是一级域名 ]
www.phpclub.top
除了一级域名之外,其他的域名统一被称为子域名。
二级域名:
1908h5.phpclub.top 【二级域名】
1908api.phpclub.top
三级域名:
android.api.phpclub.top
http://1908h5.phpclub.top/login
http://1908api.phpclub.top/login
用户表中的随机码:
用户表中的盐值字段,是用来防止相同的密码在数据库中存储的结果是一样的。
给每个用户都生成一个随机码(盐值),在存储用户的密码的时候,需要把 密码和随机码都存起来。
密码存到数据库的时候,把密码和随机码 一块md5 生成的结果存入数据库中。
如何解决跨域问题?
1、JSONP
放服务端返回一段js代码,通过执行js代码,回调对应的方法中。
JSONP格式只支持GET请求,是没有办法发送POST请求的。
通过回调函数的方式解决跨域问题。
(1) 把ajax请求返回的数据格式修改为 JSONP格式
(2) 在ajax中添加 jsonpCallback:logincallback参数,
(3) 在页面中添加一个 function logincallback(){}
(4) ajax会发送一个get请求,并且希望是返回值是jsonp格式
(5) 服务端接受 callback参数,把返回的数据 放到 logincallback( JSON数据 ) 。
(6) 客户端就能获取到跨域名下的json数据了
2、让服务端可以指定 特定的域名可以请求
// 允许http://1908h5.phpclub.top发起的跨域请求
header("Access-Cont