一. 所需环境
phpstudy8.1 我本地localhost是php7.3, mysql8.0,nginx1.16(emmm 没看文档 心塞---- 后面各种问题)
切换环境 php5.6.9 mysql5.7.26 nginx1.16
二. 开始安装
下载testlink源码包 http://www.testlink.org/
解压压缩包放到 www目录 改名为tetstink
修改Testlink配置文件(config.inc.php)
1)$tlCfg->config_check_warning_mode = 'FILE';改为$tlCfg->config_check_warning_mode = 'SILENT';
2)$tlCfg->default_language = 'en_GB';改为$tlCfg->default_language = 'zh_CN';
访问此项目 http://localhost/testlink/install/index.php 选择重新安装 ---> 同意协议 继续安装
检测环境
看了下源码
max_execution_time >= 120
session.gc_maxlifetime > 1800 就可以了
memory_limit >= 64M (如果没报错就不用改)
修改php.ini文件gc_maxlifetime
(1)session.gc_maxlifetime = 1440改为session.gc_maxlifetime = 1860
(2)max_execution_time=30改为max_execution_time=120
修改php.ini后记得重启
开启这GD LDAP JSON 三个扩展就行了
Checking GD Graphic library | OK |
Checking LDAP library | OK |
Checking JSON library | OK |
看下log文件 (testlink/logs/userxxx.log)
CREATE TABLE `attachments` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`fk_id` varchar(10) NOT NULL DEFAULT '0',
`fk_table` varchar(250) DEFAULT '',
`title` varchar(250) DEFAULT '',
`description` varchar(250) DEFAULT '',
`file_name` varchar(250) NOT NULL DEFAULT '',
`file_path` varchar(250) DEFAULT '',
`file_size` int(11) NOT NULL DEFAULT '0',
`file_type` varchar(250) NOT NULL DEFAULT '',
`date_added` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`content` longblob,
`compression_type` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query failed: errorcode[1067]
errormsg:Invalid default value for 'date_added'
1、原因
网上查询说与NO_ZERO_IN_DATE和NO_ZERO_DATE有关系
1)、NO_ZERO_IN_DATE:
在严格模式,不接受月或日部分为0的日期。如果使用IGNORE选项,我们为类似的日期插入'0000-00-00'。在非严格模式,可以接受该日期,但会生成警告。
2)、NO_ZERO_DATE:
在严格模式,不要将 '0000-00-00'做为合法日期。你仍然可以用IGNORE选项插入零日期。在非严格模式,可以接受该日期,但会生成警告
2、验证NO_ZERO_IN_DATE和NO_ZERO_DATE
在mysql执行show variables like 'sql_mode';
结果:ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
果然里面有NO_ZERO_IN_DATE,NO_ZERO_DATE
3、解决办法
修改my.cnf中的sql_mode值,如果没有sql_mode,就自己添加,添加时去掉NO_ZERO_IN_DATE,NO_ZERO_DATE这2个值,切记写在[mysqld]的下面不然不起作用,如下
[mysqld]
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION;
4 、修改完重启mysq服务