文章目录
写文章这事儿吧。。。写多了上瘾,一直不写又容易懈怠hhh
目标是暑假把几个系列都更完( 很大的🚩
前情回顾
先画个🍪
前三期已经解决了本地部署数据库以及与小程序连接的问题,现在将工作重心转移到云服务器
上图是本地与云服务器实现这个目标的步骤
因此主要区别在于第二步,准确的说是第二步中nginx的配置文件的填写(与【第零期】获取openid步骤几乎一致)
1.搭建数据库
参考第一期
微信小程序+nginx+php+mysql实现数据库管理【第一期】数据库与php的正确连接
https://blog.csdn.net/weixin_51772802/article/details/124028064
来到Navicat
数据库叫bus
表叫user_info
图中的两个数据是之前测试php输进去的
2.部署php连接数据库
1.添加证书
若要通过域名访问,需要添加证书(一般平台都有介绍,能直接使用的
nginx的话 需要把.crt和.key放到相应的位置
nginx.conf部分代码
server {
listen 80;
listen 6034 ssl; #自行设置开放的端口
server_name 139.XXX.XXX.67 www.XXXX.cn XXXX.cn; # 我的域名
# ssl on;
ssl_certificate /usr/local/nginx/cert/server.crt;
ssl_certificate_key /usr/local/nginx/cert/server.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
……
2.添加路径
第二个location的匹配方式是正则表达式,只有在index内的文件才可以被访问
nginx.conf部分代码
location / {
root /var/www/html; #站点目录
index index.html index.htm;
}
location ~ \.php$ {
root /var/www/html/hitsz; # 项目的根目录
fastcgi_pass 127.0.0.1:9000; # 应该是随便选,如果用socket通信就不行不知为何
#fastcgi_index DIR/test.php; # 注释本行和注释下面的index效果是一样的
index delete.php find.php read.php update.php write.php testphp.php connect.php; # 这里的路径是在root下的相对路径
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # 照抄
include /usr/local/nginx/conf/fastcgi.conf; # 若不在(通常都不在)nginx安装文件内, 需要通过绝对路径include到安装的nginx里
}
启动NGINX
nginx -c 【conf的绝对路径】 -s reload
验证效果
验证A
输入以下端口/对应路径,出现以下效果
testphp.php
<?php
echo "Hello World!";
phpinfo();
// return "Hello";
?>
验证B
与验证A同理,试试数据库能不能用;可以试一试write.php
附代码(与第三期几乎一致)
connect.php
<?php
header("Content-type: text/html; charset=utf8");
//1. 声明字符编码
$host='139.XXX.XXX.67';//数据库ip
// $host='localhost';//数据库ip
$user='root';//用户名
$password='XXXX';//密码
$dbName='bus';//要连接的数据库名
$my_table='user_info';//数据库中的表格
$con = new mysqli($host,$user,$password,$dbName,3306);//数据库连接
// $con = new PDO("mysql:host=$host; dbname=$dbName; port=3306", $user,$password);
// 其实其实PDO应该也是能用的,delete和增加数据也能实现但不知为何无法获得mysql处的返回值,所以查找数据等无法收到结果
// new
if ($con->connect_error) {
print_r("FAIL");
echo "系统异常,连接数据库失败:", $con->connect_error;
}
else
{
print_r("SUCCESS");
echo "连接成功</br>";
$use_table="use $dbName;";
// echo $sql;
$res_table=$con->query($use_table);
if(!$res_table) echo "进入数据库时出错";
else echo "成功进入数据库";
}
?>
注意⚠️
如果connect.php
用PDO建立连接而不是new mysqli(new 也必不可少),read.php等无法获得mysql的返回值,这里卡了好久。。。。
write.php
<?php
header("Content-type: text/html; charset=utf8");
include 'connect.php';//调用connect.php文件
//$my_table='user_info';
$open_id=$_GET['open_id'];
$nick_name=$_GET['nick_name'];
$university=$_GET['university'];
$hobby=$_GET['hobby'];
$gender=$_GET['gender'];
if ($con->connect_error) {
die("连接失败:".$con->connect_error);
}
else
{
$sql="INSERT INTO $my_table(open_id, nick_name, university, hobby, gender) VALUES ('$open_id', '$nick_name', $university, '$hobby', $gender);";
// echo $sql; // debug用
$res=$con->query($sql);
// $res = mysqli_query($con, $sql);
if($res){
$arr['status'] = 1;
$arr['info'] = 'success';
}else{
$arr['status'] = 0;
$arr['info'] = 'error';
}
echo json_encode($arr['status']);
// echo json_encode($arr['status']);
// echo json_encode($res);
die;
}
//http://localhost/test/write.php?open_id=aa&nick_name=d&university=3&hobby=dd&gender=1 前端界面debug
?>
可以看到,数据库里也多了一串数据
3.小程序与php的通道
将之前的小程序中.js文件的url从本地改到对应的路径下即可~
参考链接
微信小程序获取openid【非云开发版】【第零期】
https://blog.csdn.net/weixin_51772802/article/details/124023354
微信小程序+nginx+php+mysql实现数据库管理【第二期】小程序端的操作
https://blog.csdn.net/weixin_51772802/article/details/124041102
经验总结
学会看日志
,debug才能更有效
有的时候,.php文件无法正常运行,是因为php没有安装对应扩展
比如在第三步遇到过这样的错误:获取open_id的php文件打不开了,看完日志发现
Call to undefined function curl_init()
应该是没有下载curl扩展
输入php -m
看了一眼 发现真的没有curl
查看nginx错误日志
vim /usr/local/nginx/logs/error.log
遇到的错误
PHP安装扩展
参考链接
linux安装php及php扩展
缺了个curl扩展,弄了一下午,下面以curl为例讲讲安装php扩展
1. 自己下载一个curl
下载方法参考链接
Linux安装PHP curl拓展
只使用了上面的“1.安装curl”步骤
2. 然后稍微修改了上文“下载PHP源码”编译安装时安装的库
相当于重新安装一遍php(包括make && make install
也可能只用make就行 不清楚🍃
修改过程如下图
但是这个时候还没有下载好curl,看一眼phpinfo(用上面那个testphp.php)
下载好的
若没有粗体居中的curl,说明curl没有下载好
3.从php源码包中安装扩展
参考《Linux安装PHP curl拓展》这篇文章