记PHPCMS部署

最近 需要把基于phpcms二次开发的项目 部署服务器
发现还是存在不少问题
当然 有不少方法都可以部署
下面 是我本人较为推荐的一种 尽量少影响当前生产环境

因为我自己电脑已采用了docker开发环境 故涉及docker

本地开发的准备

推荐通过修改hosts文件 配置生产环境的域名进行开发

这样的话 在部署的时候已经省去很大的麻烦 也较大地可避免破坏当前生产环境

phpcms的docker环境可使用我的image

1
2
3
4
# 可通过docker inspect lkc-phpcms-fpm的image ID获取该容器ip地址
# nginx配置中 fastcgi_pass 容器ID:容器端口;
# 即可使用该fpm进行开发
docker pull leekachung/lkc-phpcms-fpm

数据库方面

鉴于本人是直接使用了mysql:5.7的官方image
有个别配置需要手动添加 否则phpcms异常

Q1: ERROR 1067 (42000): Invalid default value for ‘time’

Q1 解决方法

1
2
3
# 进入mysql容器的终端中运行该命令
# 可以看到 NO_ZERO_IN_DATE / NO_ZERO_DATE 日期设置不允许为0
show variables like 'sql_mode';
1
2
3
# 追加配置/etc/mysql/mysql.conf.d/mysqld.cnf
sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
# 添加后 重启mysql容器即可

屏幕快照 2019-06-17 20.02.43.png

Q2: 1265 - Data truncated for column ‘isurl’ at row 1

Q2 解决方法

v9_member_menu数据表中的isurl字段是不允许为空的
但是全新安装v9这里就是空的 导出数据库再导入的话
就会引起这个错误 解决方法为把isurl字段中的值手工改为0即可

v9_member_menu 会员前台菜单表

字段 类型 Null 默认 额外 注释
id smallint(6) unsigned PK auto_increment 识标id
name char(40) NO 菜单名
parentid smallint(6) NO 0 父菜单id
m char(20) NO 所属模型
c char(20) NO 所属控制器
a char(20) NO 所属action
data char(100) NO 附加数据
listorder smallint(6) unsigned NO 0 排序
display enum(‘1’,’0’) NO 1 是否可见
isurl enum(‘1’,’0’) NO 0 是否是外部链接
url char(255) NO 外部链接地址
1
2
3
4
5
6
7
8
9
# 修改为'0' 不是0 !!!
-- ----------------------------
-- Records of tm_member_menu
-- ----------------------------
BEGIN;
INSERT INTO `tm_member_menu` VALUES (1, 'member_init', 0, 'member', 'index', 'init', 't=0', 0, '1', '0', '');
INSERT INTO `tm_member_menu` VALUES (2, 'account_manage', 0, 'member', 'index', 'account_manage', 't=1', 0, '1', '0', '');
INSERT INTO `tm_member_menu` VALUES (3, 'favorite', 0, 'member', 'index', 'favorite', 't=2', 0, '1', '0', '');
COMMIT;

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×