当前位置:首页>网站源码>著作权纠纷 | 网站源代码著作权侵权认定的考量因素

著作权纠纷 | 网站源代码著作权侵权认定的考量因素

  • 2026-05-09 05:20:50
著作权纠纷 | 网站源代码著作权侵权认定的考量因素

要点

一、判断计算机软件著作权的权属。

法院从著作权登记证书、相关网站上的版权信息、网站的运行情况等综合考量。同时,从技术层面而言,域名的注册时间、网站源代码的形成时间、网站上线时间均可作为认定权属的考量因素。

二、计算机软件著作权的保护范围。

1、排除网站源代码中版权信息与权利人不符的代码;

2、若使用GPL等开源协议的代码,区分权利人自己创作的部分和开源代码、判断是否受开源协议的约束。

三、关于GPL协议的传染性,法院的分析非常到位

闪亮时尚公司上诉称不乱买公司前端代码与后端代码存在交互且没有进行有效隔离,不是相互独立的,根据GPL协议的相关内容以及极强的传染性特性,不乱买公司的前端文件和后端文件共同构成的其主张著作权的软件,整体软件都可以视为前端程序的修订版本,应当遵循GPL协议向所有第三方无偿开源。对此,本院认为,第一,前端代码一般是关于用户可见部分的编码,用以实现操作界面如页面布局、交互效果等页面设计;而后端代码一般是涉及用户不可见部分的编码,用以实现服务端的相关逻辑功能。同时,前端代码与后端代码是可以分别独立打包、部署的。因此,前端代码与后端代码在展示方式、所用技术、功能分工等上均存在明显不同,不能因前端代码与后端代码之间存在交互配合就认定二者属于一体,原审法院认定前端代码与后端代码相互独立并无不当。第二,不乱买公司作为权利人在本案中明确放弃以前端代码主张权利,仅以后端代码主张权利,因此涉案软件仅为后端代码而非闪亮公司所称前端文件和后端文件共同构成涉案软件。第三,根据2007年6月29日发布的GPL协议第3版第5条关于“一个受保护程序和其它独立程序的联合作品,在既不是该程序的自然扩展,也不是为了生成更大的程序,且联合作品和产生的版权未用于限制编译用户的访问或超出个别程序许可的合法权利时,被称为聚合体。包含受保护程序的聚合体并不会使本许可应用于该聚合体的其他部分的规定,闪亮时尚公司所称GPL协议的“传染性”应当是指GPL协议的许可客体不仅限于受保护程序本身,还包括受保护程序的衍生程序或修订版本,但不包括与其联合的其他独立程序。本案中,虽然不乱买公司认可其前端代码中使用了GPL协议下的开源代码,但其主张权利的是后端代码,其后端代码是独立于前端代码的其他程序,并不受GPL协议的约束,无需强制开源

四、判断计算机软件著作权的标准是接触+实质性相似。

本案中,法院从双方代码功能、逻辑、结构、函数名等方面,同时结合注释部分出现多次拼写错误,排除巧合,认定被告实施了被诉侵权行为。

裁判文书

中华人民共和国最高人民法院

民 事 判 决 书

(2019)最高法知民终663号

上诉人(原审被告):北京闪亮时尚信息技术有限公司。住所地:北京市朝阳区平房乡石各庄(星海乐器公司仓库)25号平房。

法定代表人:任君,该公司总经理。

委托诉讼代理人:赵晓萌,北京美辰律师事务所律师。

被上诉人(原审原告):不乱买电子商务(北京)有限公司。住所地:北京市朝阳区京顺路111号1幢202号二层F2-16-01号。

法定代表人:张远萌,该公司执行董事。

委托诉讼代理人:陈明涛,北京市兰台律师事务所律师。

委托诉讼代理人:田君露,北京市兰台律师事务所律师。

上诉人北京闪亮时尚信息技术有限公司(以下简称闪亮时尚公司)因与被上诉人不乱买电子商务(北京)有限公司(以下简称不乱买公司)侵害计算机软件著作权纠纷一案,不服北京知识产权法院于2019年7月5日作出的(2016)京73民初1111号民事判决,向本院提起上诉。本院于2019年10月25日受理后,依法组成合议庭,并于2019年12月2日公开开庭进行了审理。上诉人闪亮时尚公司的委托诉讼代理人赵晓萌,被上诉人不乱买公司的委托诉讼代理人陈明涛、田君露,到庭参加诉讼。本案现已审理终结。

闪亮时尚公司上诉请求:撤销原审判决,依法发回重审或改判驳回不乱买公司的全部诉讼请求。事实和理由:(一)原审法院认定上诉人侵权事实不清。首先,在不乱买公司版权登记证书的时间等方面存在重大瑕疵、取得也违反相关流程的情况下,不乱买公司应当就其开发进行举证。其次,不乱买公司软件著作权登记时间为2016年8月23日,代码公证时间为2016年8月30日。闪亮时尚公司网站备案时间为2016年7月11日,正式上线时间为2016年7月22日。不乱买公司是在闪亮时尚公司网站上线1个月后才申请软件著作权及公证相关代码的,不乱买公司版权登记证书不能证明其软件代码比闪亮时尚公司率先开发使用。再次,不乱买公司提供的代码并非原创,而是大量使用开源代码进行篡改和拼凑,权利存在争议。最后,不乱买公司软件的运行环境是Linux,但是如果软件环境涉及到Linux,在向版权部门申请软件著作权时必须提交《GPL声明》保证该软件并未使用或修改任何遵循GPL协议的软件代码。在著作权登记通常只进行形式审查的情况下,不乱买公司的版权证书是向国家版权局隐瞒或虚报其使用了GPL协议的软件代码情况下所获得的。(二)原审法院存在程序违法情形。不乱买公司在庭审中明确放弃了版权信息为2013年的代码文件的相关权利,但原审法院仍认定不乱买公司对该部分代码享有著作权,属于超出诉讼请求裁判。(三)原审法院认定闪亮时尚公司工作人员蔡宇初有接触可能性属于认定错误。蔡宇初的工作岗位并无接触涉案相关代码的可能,其从不乱买公司离职时做好了一切交接工作也被告知没有竞业禁止条款,并且其入职闪亮时尚公司并成为股东是在闪亮时尚公司网站上线后半年。(四)原审法院对GPL开源协议内容认定存在错误。原审法院认为前端文件与后端文件由于展现方式不同、所用技术不同、分工亦有明确区别,应属于独立程序。但不乱买公司所使用的遵循GPLv2协议的前端代码文件还需要调用其后端PHP软件的图片,存在着交互,前端代码文件不能独立工作,必须和后端PHP软件进行配合。因此,不乱买公司的前端文件和后端文件共同构成了其主张著作权的软件。而GPL协议明确规定只要软件在整体上或者某个部分使用了来源于遵循GPL代码的文件,整个软件源码就必须无偿向所有第三方提供公开整套软件的源代码。不乱买公司前端文件是其网站软件的一部分,因此不乱买公司的整体软件必须遵循GPL协议,向任何第三方无偿进行开源。同时,原审法院认为后端代码并非前端程序的衍生品及修订版本,因此GPL协议对权利代码无约束力的事实认定和逻辑存在错误。不乱买公司所使用的GPLv2的代码文件与后端文件没有做任何有效隔离,因此根据GPL协议的相关内容以及极强的传染性特性,包括前端文件和后端文件在内的整个软件实质上都可以视为其GPL协议前端程序的修订版本。(五)原审法院判决闪亮时尚公司应停止侵权已无必要。闪亮时尚公司在2018年1月就已经着手对软件进行重新开发,在2018年5月全新的软件代码已上线。新的软件代码与之前的软件代码无论是整体框架、结构、代码本身、逻辑、语言表述上均完全不同,闪亮时尚公司也向原审法院提交了更改后的软件源代码。(六)原审法院判决赔偿额过高。不乱买公司的网站自2016年6月已经停止更新和运营,不乱买公司没有损失。原审法院采用由不乱买公司自行选择20个软件的方式进行比对,比对的并非海淘搜索导购类网站的核心代码,个别软件的重合没有使得闪亮时尚公司获利。不乱买公司一审庭审时明确要求赔偿数额的依据是《资产转让协议》,根据该协议网站软件代码的定价仅为121239元人民币。2017年7月,彭振文以25万元的价格受让取得了不乱买公司37%股权,而不乱买公司目前旗下资产包括含涉案软件著作权在内的三个软件著作权和域名、商标、用户、海外电商合作伙伴关系等重要资产以及相关的固定资产。因此,不乱买公司此次诉讼的软件价值非常有限。(七)原审法院认定闪亮时尚公司侵害不乱买公司署名权属于错误认定。闪亮时尚公司与不乱买公司的软件的近似程度极低,并且闪亮时尚公司已在2018年对网站软件进行了全面整改。根据行业惯例,计算机软件行使署名权的通常做法是对整体软件的作者进行署名。闪亮时尚公司未侵害不乱买公司署名权,不应承担赔礼道歉的侵权责任。

不乱买公司答辩称:原审法院认定闪亮时尚公司构成侵权事实清楚,认定无误。原审法院不存在程序违法情形。原审认定蔡宇初存在接触可能性无误。原审法院对GPL开源协议的认定无误。原审法院判决闪亮时尚公司停止侵权无误。原审法院判决赔偿数额不属过高。原审法院认定闪亮时尚公司侵害不乱买公司署名权无误。

不乱买公司向原审法院提起诉讼,原审法院于2016年11月3日立案受理,不乱买公司起诉请求:(一)判令闪亮时尚公司立即停止使用侵权软件;(二)判令闪亮时尚公司在《人民日报》、《光明日报》及其官方媒体上向不乱买公司公开赔礼道歉;(三)判令闪亮时尚公司赔偿不乱买公司经济损失50万元;(四)判令闪亮时尚公司承担不乱买公司因本案的合理支出119260元。

原审法院认定事实:

一、与不乱买公司软件权属相关事实

2014年3月不乱买公司成立。2014年8月10日,不乱买公司网站(××)上线。2016年8月23日,国家版权局颁发计算机软件登记证书,显示软件名称为“不乱买时尚海淘软件(PC版)”,著作权人为不乱买公司,开发完成日期为2015年3月27日,首次发表日期为2015年3月27日。

不乱买公司提交了(2016)京中信内经证字第72865号公证书,2016年8月30日对不乱买公司网站(××)页面信息、网页源代码及脚本源代码进行了公证。该公证书显示,不乱买公司网站页面底部标有“©2013-2016不乱买电子商务(北京)有限公司”字样。同时,不乱买公司亦提交了其网站源代码电子文件。

为证明早于不乱买公司成立之前涉案软件已处于研发阶段且不乱买公司对此享有著作权,不乱买公司补充提交了如下证据用以证明涉案软件的研发过程:1、2013年7月11日不乱买公司执行董事张远萌的邮件,用以证明其于2013年7月11日注册了不乱买网站域名。2、四合青春网络技术(北京)有限公司营业执照及章程。3、资产转让协议,用以证明四合青春网络技术(北京)有限公司将资产转让给周晓东,其中域名清单显示为buluanmai.com。4、《关于不乱买电子商务(北京)有限公司非货币出资协议》及记账凭证,用以证明周晓东将涉案软件出资给不乱买公司。5、2013年11月26日“mumu李永艳”电子邮件,用以证明当时不乱买公司网站首页已经建立。6、2014年4月30日彭康茂邮件“软件Bug的现状”、2016年4月8日软件信息采集表相应邮件、2014年1月30日blm年终总结邮件等。闪亮时尚公司对上述部分证据真实性不予认可,并认为域名与软件著作权无关,且上述证据不能证明该研发软件与涉案软件系同一软件。

一审庭审中,不乱买公司确认其主张权利的代码为其后端所有代码,不包括数据库。闪亮时尚公司对不乱买公司软件源代码权属不予认可,但未提交相反证据。

二、关于闪亮时尚公司网站及接触可能性相关事实

2016年6月15日,闪亮时尚公司成立。工信部备案信息查询显示www.blinghour.com的网站主办单位为闪亮时尚公司,审核通过日期为2016年7月11日。

为证明闪亮时尚公司对不乱买公司享有著作权的软件具有接触可能性,不乱买公司提交了微信记录、邮件截图、劳动合同及闪亮时尚公司工商登记信息等。其中,微信名为“liyingyan”的人在聊天中发送了“blinghour.com”域名交易截图,并称该域名系彭康茂注册。该交易截图显示,域名blinghour.com,联系人彭先生,邮箱386×××@qq.com。邮件截图显示,地址为386×××@qq.com的邮箱于2016年7月2日向不乱买公司执行董事张远萌发送邮件,标题为“关于增加不乱买电子商务(北京)有限公司二零一六年第一次临时股东会议案的函”,邮件落款为“公司监事:彭康茂”。2016年7月25日,该邮件地址发送邮件称,“于涛:首先声明……请按时支付我6月的工资,目前已拖欠长达10日之久…公司应该欠我至少可能有10万元。我会追究到底。彭康茂”等。与彭康茂签订的劳动合同显示,甲方为不乱买公司,乙方为彭康茂,签订日期2014年2月25日。第六条,甲方根据工作需要,聘任乙方在甲方的研发部部门从事CTO岗位的工作。第二十五条,乙方任职期间为完成甲方的工作任务、履行乙方的职务,以及主要利用甲方的物质技术条件等产生的知识产权,或者乙方因任何原因离职后1年内做出的、与其在甲方承担的本职工作或者分配任务有关的任何及所有知识产权成果,均属甲方所有,经申请获得的知识产权亦属甲方所有。与蔡宇初签订的劳动合同显示,甲方为不乱买公司,乙方为蔡宇初,签订日期2015年1月16日。第六条,甲方根据工作需要,聘任乙方在甲方的研发部部门从事移动事业部总监岗位的工作。第二十五条,知识产权相关内容同前。闪亮时尚公司工商登记信息显示,该公司股东之一为蔡宇初。

闪亮时尚公司认为上述证据与案件无关,并向原审法院提交了企业信用信息公示打印件及离职交接相关邮件,用以证明蔡宇初系2017年1月才成为闪亮时尚公司股东,且其在不乱买公司工作期间负责iosapp开发,与涉案源代码无接触。其中,闪亮时尚公司股权变更信息显示,蔡宇初股权变更日期为2017年1月24日。邮件截图显示,2016年7月16日,蔡宇初发送邮件对不乱买公司方发送的“蔡宇初6月离职工资”邮件内容进行了确认。2016年8月19日,不乱买公司张远萌向蔡宇初发送邮件称“蔡总:如你配合公司将公司iosapp开发者账号重置密码邮件顺利转回,公司确认找回密码后将不再与你继续履行竞业禁止协议”。

闪亮时尚公司另提交了其公司简介打印件,用以证明闪亮时尚公司在时尚行业具备一定影响力。

三、关于双方源代码获取及比对情况

不乱买公司对闪亮时尚公司网站页面信息、网页源代码及脚本源代码进行了公证,并提交了自行比对的结果,闪亮时尚公司对此不予认可。

一审中,不乱买公司向原审法院提交了调查取证申请,依据不乱买公司申请,原审法院于2018年3月向阿里云计算有限公司调取其服务器中闪亮时尚公司网站后台全部软件代码,并于同年6月收到保全的证据材料共530.35GB。

因闪亮时尚公司不同意向不乱买公司及案外人提供其网站代码文件,仅同意在原审法院的主持下进行比对,且由于双方代码文件数量庞大,双方当事人均同意采用抽样方式进行比对,故原审法院确认在其主持下采用抽样比对的方式对不乱买公司和闪亮时尚公司网站代码文件进行比对,抽样比对结果将推及全部代码。抽样及比对过程如下:

在原审法院主持下,对不乱买公司提交的代码文件进行现场勘验。将不乱买公司提交的源代码拷贝到勘验电脑上,搜索以PHP为后缀的文件共计3936个。以“copyright”为关键词搜索有版权信息的文件48个,剩余无版权信息文件3888个。在48个有版权信息的文件中2013年以后且版权信息为www.buluanmai.com的软件19个,版权信息为www.buhuiluan.com的文件2013年1个,2014年8个、2015年5个、2016年1个,共计34个,即剩余14个版权信息在2013年之前的文件。不乱买公司明确放弃上述版权信息在2013年以前的14个文件,即主张权利文件3922个。经双方当事人一致同意,原审法院确认以5%的比例从中挑选20个文件作为不乱买公司的抽样比对文件,再以关键词等方式确定闪亮时尚公司的对应文件,最后用比对软件进行比对。

在技术调查官的监督下对原审法院调取的闪亮时尚公司网站源代码压缩文件进行全盘解压。因存储设备原因,该文件解压过程出现报错。技术调查官对解压结果进行检查后认为,共计1086万个文件,基本解压完成,没有大的文件遗失,解压完成率95%以上。双方对解压过程无异议,但不乱买公司认为解压完成率未达到100%,可能影响抽样结果,故请求重新解压或提交鉴定或自行比对。原审合议庭在听取技术调查官意见后认为,解压结果出现报错系由不可预料的文件损坏造成,属于证据本身的问题,故对于重新解压缩的请求予以驳回。且现有的比对方式系经双方当事人一致同意确认,在闪亮时尚公司不同意更换比对方式的情况下,原审合议庭对不乱买公司更换比对方式的请求不予支持。

不乱买公司针对其选取的20个核心代码文件在已解压的闪亮时尚公司源代码文件中进行查找,最终确定对应文件13个。涉及的文件名包括order.php、message.php、shop.php、class.userinfo.php、class.price.php、config.brands.php、class.clientorder.php、houtai_info_ha.php、add_order.php、order.php、cart.php、config.brandsearch.php、act_haitou.php。针对上述13个文件使用双方确定的ultracompare软件与不乱买公司对应源代码文件进行逐一比对,最终由该比对软件输出13份比对结果。

技术调查官对不乱买公司提交的后端代码进行了筛查,排除了开源代码的使用,在此情况下,比对结果及事实分析如下:

1-order.php

摘要:

1088行匹配

197块差异

463:1098行差异

闪亮时尚公司(右)相对于不乱买公司(左)增加了一些不同国家转运的信息,以及拼单服务的代码,其他代码逻辑基本上两者一致,有变量名不同,但仅仅是细微的命名差异,还存在相同的有缺陷的注释“查库存(为了更新下商品的状态)”,匹配程度高。

2-message.php

摘要:

15行匹配

8块差异

352 : 16行差异

闪亮时尚公司(右)仅有增加商品详情的函数,不乱买公司(左)则有多个函数,匹配程度不高。

3-shop.php

摘要:166 行匹配

7 块差异

31 : 25 行差异

两者函数代码基本匹配。还存在相同文字和格式的注释://实例化stdclass,这是php内置的空类,可以用来传递数据,由于json_decode后的数据是以对象数组的形式存放的,以及//所以我们生成的时候也要把数据存储在对象中,匹配程度高。

4-class.userinfo.php

摘要:

112 行匹配

56 块差异

463 : 337 行差异

闪亮时尚公司(右)相对于不乱买公司(左)在会员信息定义方面有所不同,还有推荐码、短信验证等相关内容但非实质性内容,虽然在图像调整尺寸方面函数位置不同,但代码实质相同,因此基本匹配。

5-class.price.php

摘要:

134 行匹配

73 块差异

838 : 838 行差异

闪亮时尚公司(右)相对于不乱买公司(左)增加红色标签、更多的转运、自提方式以及相关的函数。匹配程度高。

6-config.brands.php

摘要:

3 行匹配

1 块差异

7389 : 11515 行差异

两个文件都涉及到对各种品牌的参数定义,有相同的有不同的,闪亮时尚公司(右)的多一点,但是整体上不涉及程序的核心功能,这两个文件对比意义不大,匹配程度不高。

10-class.clientorder.php

摘要:

339 行匹配

115 块差异

456 : 807 行差异

右边多了全球物流相关的函数,以及不同国家转运、修改用户订单地址的情况,但是这都基于业务的扩展。大部分代码以及注释都实质相同,并且存在相同的瑕疵如有相同的注释“//从新计算价格和免运等”,其中有错误拼写,应该是“重新计算”,匹配程度高。

11-houtai_info_ha.php

摘要:

656 行匹配

83 块差异

267 : 242 行差异

闪亮时尚公司(右)相对于不乱买公司(左)有些许差异,总体上是实质相似。

12-add_order.php

摘要:

285 行匹配

60 块差异

113 : 170 行差异

闪亮时尚公司(右)相对于不乱买公司(左)有些许差异,总体上是实质相似。

17-order.php

摘要:

796 行匹配

171 块差异

345 : 804 行差异

右边对计算价格的函数以及其他函数有所调整的情况,大部分代码以及注释都实质相同,并且存在相同的瑕疵,如有相同的注释“//吧商品放到数组”其中应该为“把”字,匹配程度高。

18-cart.php

摘要:

107 行匹配

33 块差异

258 : 244 行差异

两者差异较大,并且其对比的文件名不一样,匹配程度不高。

19-config.brandsearch.php

摘要:4 行匹配

1块差异

7388 : 7001行差异

两者都是对品牌的定义文件,非功能性程序文件,大多数品牌一致,仅是相关赋值不同,匹配程度不高。

20-act_haitou.php

摘要:

802行匹配

129块差异

214 :491 行差异

闪亮时尚公司(右)相对于不乱买公司(左)有些许差异,总体上实质相似。

对于比对结果,不乱买公司认为,闪亮时尚公司的13个代码文件中均存在大面积复制、抄袭不乱买公司代码的情形。比对软件输出的结果中显示不匹配的情况中存在双方代码的错行,在不乱买公司纠正了错行的情况下,匹配行占不乱买公司代码文件总行数的比例高达70.15%、84.26%、78.94%、71.07%、71.61%等。并且不乱买公司代码中多处极具个人特色的注释、标记信息等同样出现在闪亮时尚公司的代码文件中。同时,闪亮时尚公司代码与不乱买公司代码的编写在功能、逻辑、结构等方面都存在完全相同的情况。

闪亮时尚公司认为,20个文件系不乱买公司单方面选择,并且其中7个没有在闪亮时尚公司代码文件中找到对应的文件;3个文件属于第三方物流开发的软件;1个文件的近似度仅为3.83%,2个文件近似度为0%,剩下4个文件近似度各有不同,但无版权信息等,不认可双方代码文件构成相似。

四、其他

关于GPL协议。2007年6月29日发布的该协议第3版有如下规定:定义部分,“本程序”指任何在本许可下批准的受版权保护的程序。“修订”程序是指从软件拷贝或者做出全部或一丁点儿的修改,这不同于逐字逐句的拷贝,是需要版权许可的。修订成果被称为先前程序的“修订版本”或者“基于”先前程序的程序。

第5条,发布修订过的源码版本,您可根据第4条的条款,以源码形式发布一个基于本程序的程序,或者从本程序中制作该程序需要进行的修订,但是您必须同时满足所有以下条件:a)……b)……c)……本许可以及第7条中的任何附加条款适用于整个程序及其所有部分,无论该等程序以什么形式打包。……d)……如果一个受保护程序和其它独立程序的联合作品,则若该联合作品并非该程序的自然扩展,也不是为了在某个存储或发布媒介上生成更大的程序,且如果联合作品和产生的版权未用于限制编译用户的访问或超出个别程序许可的合法权利时,这样的联合作品就被称为“聚合体”。包含受保护程序的聚合体并不会使本许可应用于该聚合体的其他部分;

第7条……您遵守GPL有关程序和修订版的各方面规定,但例外程序除外。所有例外程序是修订版本可识别部分,不是程序的衍生产品,例外程序本身可以合理视为独立和单独的程序,并可根据其最初许可的例外许可发布,例外程序本身不能以Aptana发布给您的形式进行修订。这部分的目标代码或可执行形式随附相应机器可读的完整源代码,在同一媒介上的这部分的对应目标代码或可执行形式,被适用例外许可作为这部分的对应目标代码或可执行形式,按照GPL规定,与本程序、或存储或发布媒介量的修订版本整合的例外程序,是聚合体……。

闪亮时尚公司认为,不乱买公司提交的源代码中使用了适用于上述协议下的开源代码,并向原审法院提交了(2018)京东方内民证字第7257号公证书及光盘。该公证书同时显示,不乱买公司网站最后更新日期为2016年6月。

另,不乱买公司对其主张的合理支出未提交票据予以证明。

原审法院认为:

根据双方当事人的诉辩意见,一审争议焦点如下:

一、关于权属问题

《计算机软件保护条例》第九条规定,软件著作权属于软件开发者,本条例另有规定的除外。如无相反证明,在软件上署名的自然人、法人或者其他组织为开发者。首先,根据不乱买公司网站的版权署名信息,不乱买公司对其网站包括源代码在内的作品享有著作权。其次,在案证据显示,不乱买公司网站上线日期为2014年8月,早于闪亮时尚公司网站上线日期2016年7月11日。且根据闪亮时尚公司提供的公证书记载,不乱买公司网站于2016年6月已停止更新。由此可见,不乱买公司提交的网站源代码形成时间显然早于闪亮时尚公司网站上线日期。第三,不乱买公司提交的计算机软件著作权登记证书载明的登记日期虽晚于闪亮时尚公司网站上线时间,但结合不乱买公司网站上线日期及运行时间,该登记证书亦可以作为其权属的佐证。最后,闪亮时尚公司对涉案软件权属虽不予认可,但并未就此提交相反证据。综合考虑上述情况,在不乱买公司已就其享有涉案软件著作权提交初步证据且闪亮时尚公司并未举出反证的情况下,原审法院对不乱买公司的权利予以认可。不乱买公司有权就涉案侵权行为提起诉讼。

关于不乱买公司权利的范围。闪亮时尚公司认为,不乱买公司主张权利的3922个代码中,有15个版权信息为www.buhuiluan.com的代码及部分版权信息为2013年即不乱买公司成立之前的代码,不乱买公司对上述代码不享有权利。对此,原审法院认为,不乱买公司虽成立于2014年3月,但软件开发过程早于公司成立日期属常见情形,在无相反证据的情况下,原审法院确认不乱买公司对版权信息为2013年的代码享有著作权。而对于版权信息为www.buhuiluan.com的代码,原审法院认为,因不乱买公司提交的证据均不能证明其与www.buhuiluan.com之间存在关联性或对应性,故该部分代码应排除在不乱买公司权利范围之外

二、关于开源代码抗辩

闪亮时尚公司提交的公证书显示,不乱买公司网站的前端代码中使用了GPL许可协议下的开源代码,不乱买公司对此亦予以认可。闪亮时尚公司认为,不乱买公司使用了适用于GPLv2软件许可协议下的开源代码,根据GPL许可协议相关内容,不乱买公司无权对其网站整个软件主张著作权。对此,原审法院认为,不乱买公司明确其主张权利的代码为后端代码。前端代码开发主要是指前端用户可见的操作界面如页面布局、交互效果等页面设计的一种实现方式,后端代码开发则主要是指后端用户不可见的服务端相关逻辑功能等模块的实现,二者展示方式不同、所用技术不同、分工亦有明显区别,属于可独立的程序。根据GPL协议的相关规定,GPL协议的许可客体是在GPL协议许可下批准的受版权保护的程序以及基于该程序的衍生产品或修订版本。就该案而言,不乱买公司主张的权利的后端代码中已排除开源代码,不乱买公司虽在其前端代码中使用了开源代码,但其后端代码程序并非其前端程序的衍生品或修订版本,故根据GPL协议的相关规定,该协议对涉案权利代码并无拘束力。据此,闪亮时尚公司的相关抗辩理由不能成立。

三、关于涉案侵权行为是否成立

著作权侵权案件中判断被诉侵权作品是否使用了享有著作权作品的方法一般适用“接触加实质性相似”。关于接触可能性,首先,在案证据显示闪亮时尚公司的股东蔡宇初曾在不乱买公司研发部门任要职(移动事业部总监),虽然闪亮时尚公司辩称蔡宇初在不乱买公司处仅负责iosapp开发,但该事实并不能排除蔡宇初接触到涉案权利软件的可能性,故原审法院对该辩称不予认可。其次,不乱买公司提交的微信记录、邮件截图、劳动合同等可以形成证据链,证明曾为不乱买公司监事的彭康茂注册了闪亮时尚公司网站域名,且彭康茂于离职时曾与不乱买公司就拖欠工资事宜产生纠纷,而彭康茂亦在不乱买公司研发部门任要职(CTO)。故综合上述事实,原审法院认可闪亮时尚公司具有接触到不乱买公司涉案权利软件的可能性。

关于实质性相似。基于比对结果及技术分析可知,抽样比对的绝大部分程序文件在程序逻辑和结构方面实质相同,函数变量命名特点相同或相似,且闪亮时尚公司不同文件的代码中多次出现与不乱买公司程序中相同的注释错误,该现象难谓巧合。据此,可以确定闪亮时尚公司与不乱买公司的上述程序文件实质相似的比例较高,闪亮时尚公司的该行为落入不乱买公司的复制权及修改权的保护范围。故闪亮时尚公司未经不乱买公司许可使用涉案软件的行为已侵犯不乱买公司就其软件享有的复制权及修改权,应承担停止侵权、赔偿损失的法律责任。

关于署名权。因涉案侵权软件使用了不乱买公司的软件代码,但却并未注明该软件部分系来源于不乱买公司,该行为已侵害不乱买公司就其软件享有的署名权,依法应当承担赔礼道歉的民事责任。关于赔礼道歉的方式,考虑到闪亮时尚公司涉案侵权行为的影响范围和可操作性,原审法院酌定闪亮时尚公司在其网站首页刊登致歉声明以消除影响。

四、关于赔偿数额

对于赔偿数额的确定,因不乱买公司并未提交证据证明不乱买公司损失及闪亮时尚公司获利,而在不乱买公司损失及闪亮时尚公司获利均无法确定的情况下,依据《中华人民共和国著作权法》第四十九条的规定,应在五十万以下进行酌定。

原审法院对于赔偿损失的数额考虑以下因素:1、该案采用抽样比对的方式,抽样比例5%,即不乱买公司主张的权利源代码数量大;2、该案虽采用抽样比对的方式,但并非随机抽样,不乱买公司自行选择了其用于比对的20个代码文件,该选择有利于不乱买公司;3、在不乱买公司的代码文件中,有部分版权信息无法证明与不乱买公司有关,原审法院未予认可;4、在被诉侵权软件中存在多处与不乱买公司代码中相同的注释错误,该抄袭行为具有明显主观过错等。综合上述因素,原审法院酌情确定闪亮时尚公司赔偿不乱买公司经济损失25万元。对于合理支出,不乱买公司虽未提交票据予以证明,但其公证行为真实发生,亦确有律师出庭,且该案乃计算机软件纠纷,涉及软件比对,专业性及复杂性较强,确实有必要委托律师代理诉讼。故原审法院在合理范围内对公证费及律师费进行酌定。

原审法院判决:一、闪亮时尚公司自判决生效之日起,停止涉案侵害不乱买公司涉案软件著作权的行为;二、闪亮时尚公司于判决生效之日起十日内,赔偿不乱买公司经济损失二十五万元及诉讼合理支出三万元;三、闪亮时尚公司于判决生效之日起十日内,就其侵害软件著作权行为在其网站(××)首页刊登致歉声明,以消除影响(声明内容需经原审法院审核,逾期不执行,将在一家全国发行的报纸上公布判决主要内容,相关费用由闪亮时尚公司负担);四、驳回不乱买公司的其他诉讼请求。一审案件受理费9993元,由闪亮时尚公司负担。

本院二审期间,当事人均未提交新证据。

本院经审理查明,原审法院查明的事实基本属实,本院予以确认。

本院认为,结合已查明的事实和双方当事人的诉辩观点,本案二审争议焦点为:(一)闪亮时尚公司是否侵害了不乱买公司涉案软件著作权;(二)原审法院判决是否超越不乱买公司请求范围;(三)涉案权利软件是否为开源软件,是否应无偿许可他人使用;(四)原审法院判决闪亮时尚公司停止侵权有无依据及必要性;(五)原审法院认定闪亮时尚公司侵害不乱买公司署名权有无依据;(六)原审法院的判赔金额是否合理。

一、闪亮时尚公司是否侵害了不乱买公司涉案软件著作权

关于涉案软件权属问题。不乱买公司为证明其享有涉案软件著作权提交了计算机软件登记证书、不乱买公司网站(××)页面及源代码、网站上线运行等相关证据。闪亮时尚公司上诉称不乱买公司版权登记时间有重大瑕疵,同时其版权登记证书的取得存在隐瞒或虚报其使用GPL协议软件代码的情况。对此,本院认为,原审法院并非仅凭著作权登记证书认定不乱买公司享有著作权,而是结合著作权登记证书、相关网站上的版权信息、网站的运行情况等综合考量,在闪亮时尚公司未提出反证的情况下,原审法院认定不乱买公司享有著作权并无不当,闪亮时尚公司该上诉理由不能成立。闪亮时尚公司还上诉称软件著作权登记时间为2016年8月23日,代码公证时间为2016年8月30日,而闪亮时尚公司网站备案时间在2016年7月11日,早于上述两个时间点,因此不能证明不乱买公司开发使用涉案软件时间早于闪亮时尚公司。对此,本院认为,软件著作权登记证书的备案时间不代表软件开发完成的时间,软件著作权登记证书显示开发完成时间为2015年3月27日,且根据闪亮时尚公司公证书显示不乱买公司网站于2016年6月已停止更新,该时间早于闪亮时尚公司网站备案时间,已初步证明不乱买公司开发使用涉案软件时间早于闪亮时尚公司,闪亮时尚公司对此未提出反证予以推翻,闪亮时尚公司该上诉理由不能成立。闪亮时尚公司还上诉称不乱买公司代码非原创,其前端代码中存在大量开源代码,权属存在争议。对此,本院认为,本案中不乱买公司明确其主张权利的代码为其后端代码而非前端代码,闪亮时尚公司并未举证证明不乱买公司后端代码中存在开源代码,闪亮时尚公司该上诉理由亦不能成立。

关于接触可能性。闪亮时尚公司上诉称蔡宇初在不乱买公司的工作岗位无接触涉案软件的可能性,且离职时被明确告知无竞业禁止条款,其成为闪亮时尚公司股东是在闪亮时尚公司网站上线半年后,因此,原审法院认定蔡宇初有接触可能性属事实认定错误。对此,本院认为,蔡宇初曾在不乱买公司研发部担任移动事业部总监的职务,从事iosapp的开发,原审法院认定其有存在接触涉案软件可能性并无不当;蔡宇初与不乱买公司之间有无竞业禁止条款和蔡宇初成为闪亮时尚公司股东的时间均与其接触涉案软件的可能性无关;原审法院还结合在不乱买公司研发部担任CTO的彭康茂注册了闪亮时尚公司网站域名的情况,认定闪亮时尚公司存在接触可能性,该认定无误,闪亮时尚公司的该上诉理由不能成立。

综上,不乱买公司享有涉案软件著作权,闪亮时尚公司存在接触涉案软件的可能性,且抽样的程序文件中闪亮时尚公司的代码多次出现与不乱买公司代码相同的注释错误,在无合理理由的情况下,基本可以排除巧合。因此,根据现有在案证据可以认定闪亮时尚公司实施了被诉侵权行为。

二、原审法院判决是否超越不乱买公司请求范围

闪亮时尚公司上诉称不乱买公司在庭审中明确放弃了版权信息为2013年的代码文件的相关权利,但一审法院仍认定不乱买公司对该部分代码享有著作权,属于超出诉讼请求裁判。根据一审庭审笔录和原审判决认定事实,不乱买公司在本案中明确放弃的是14个版权信息在2013年以前的文件,原审法院认定不乱买公司对2013年的代码文件享有相关权利无误,没有超越不乱买公司的请求范围。

三、涉案权利软件是否为开源软件、是否应无偿许可他人使用

闪亮时尚公司上诉称不乱买公司前端代码与后端代码存在交互且没有进行有效隔离,不是相互独立的,根据GPL协议的相关内容以及极强的传染性特性,不乱买公司的前端文件和后端文件共同构成的其主张著作权的软件,整体软件都可以视为前端程序的修订版本,应当遵循GPL协议向所有第三方无偿开源。对此,本院认为,第一,前端代码一般是关于用户可见部分的编码,用以实现操作界面如页面布局、交互效果等页面设计;而后端代码一般是涉及用户不可见部分的编码,用以实现服务端的相关逻辑功能。同时,前端代码与后端代码是可以分别独立打包、部署的。因此,前端代码与后端代码在展示方式、所用技术、功能分工等上均存在明显不同,不能因前端代码与后端代码之间存在交互配合就认定二者属于一体,原审法院认定前端代码与后端代码相互独立并无不当。第二,不乱买公司作为权利人在本案中明确放弃以前端代码主张权利,仅以后端代码主张权利,因此涉案软件仅为后端代码而非闪亮公司所称前端文件和后端文件共同构成涉案软件。第三,根据2007年6月29日发布的GPL协议第3版第5条关于“一个受保护程序和其它独立程序的联合作品,在既不是该程序的自然扩展,也不是为了生成更大的程序,且联合作品和产生的版权未用于限制编译用户的访问或超出个别程序许可的合法权利时,被称为聚合体。包含受保护程序的聚合体并不会使本许可应用于该聚合体的其他部分”的规定,闪亮时尚公司所称GPL协议的“传染性”应当是指GPL协议的许可客体不仅限于受保护程序本身,还包括受保护程序的衍生程序或修订版本,但不包括与其联合的其他独立程序。本案中,虽然不乱买公司认可其前端代码中使用了GPL协议下的开源代码,但其主张权利的是后端代码,其后端代码是独立于前端代码的其他程序,并不受GPL协议的约束,无需强制开源。综上,闪亮时尚公司的上诉理由不能成立。

四、原审法院判决闪亮时尚公司停止侵害有无依据及必要性

闪亮时尚公司上诉称其于2018年5月上线了与之前的软件代码在整体框架、结构、代码本身、逻辑、语言表述上均完全不同的全新的软件代码,因此原审判决闪亮时尚公司停止侵权已无必要性。对此,本院认为,第一,闪亮时尚公司实施了侵害不乱买公司软件著作权的行为,应承担停止侵害的民事责任。第二,由于被诉侵权人闪亮时尚公司掌握着侵犯权利人著作权的软件代码,即使本案诉讼之时闪亮时尚公司采用了全新的软件代码,亦需要在判决中明确其负有停止侵害的责任,以避免之后侵权情况的再次发生。第三,本案中进行比对的闪亮时尚公司源代码为原审法院于2018年6月收到的阿里云计算有限公司从其服务器中提取的全部软件源代码,这与闪亮时尚公司陈述其在2018年5月已完成新软件上线不符。据此,闪亮时尚公司上诉理由不能成立。

五、原审法院认定闪亮时尚公司侵害不乱买公司署名权有无依据

计算机软件的署名权是指表明开发者身份、在软件上署名的权利。闪亮时尚公司在被诉侵权软件中使用了不乱买公司软件代码,但没有表明该部分软件代码的开发者身份及来源,侵害了不乱买公司的署名权,原审法院认定无误。闪亮时尚公司上诉称其没有侵害署名权,没有事实和法律依据,本院不予支持。

六、原审法院的判赔金额是否合理

本案中,不乱买公司未提交证据证明其损失或闪亮时尚公司侵权获利情况,原审法院综合考量不乱买公司权利代码数量和范围、抽样比对较有利于不乱买公司、闪亮时尚公司侵权主观过错等因素,酌情认定闪亮时尚公司赔偿不乱买公司经济损失25万元,并无不当。闪亮时尚公司上诉称原审未采取随机抽样而是由不乱买公司自行选择比对软件,对不乱买公司有利,此点原审法院酌定判赔金额时已经予以考量。闪亮时尚公司上诉称不乱买公司网站已经停止更新因而其侵权行为不会造成损失,没有事实和法律依据。闪亮时尚公司还上诉称不乱买公司提供的《目标资产清单》显示不乱买公司网站代码定价仅为121239元、2017年7月不乱买公司新股东以25万元受让取得37%的股权,均显示涉案软件价值有限。对此,本院认为,《目标资产清单》形成于不乱买公司网站正式完成以前,其中包含的并非本案涉案软件的全部代码,而股权转让价款并不能直接作为评价涉案软件价值的依据,闪亮时尚公司的上诉理由不能成立。

综上所述,闪亮时尚公司的上诉理由均不能成立,本院不予以支持。原审判决认定事实清楚,适用法律无误,应予维持。依照《中华人民共和国民事诉讼法》第一百七十条第一款第一项之规定,判决如下:

驳回上诉、维持原判。

二审案件受理费5500元,由北京闪亮时尚信息技术有限公司负担。

本判决为终审判决。

审判长  徐卓斌

审判员  高 雪

审判员  雷艳珍

二〇一九年十二月二十三日

法官助理罗瑞雪

书记员郭云飞

End

 作者简介

邓 珂

  华中科技大学硕士,海军工程大学学士,专利代理人,曾从事通信、计算机研发及网络运维工作十余年,具有互联网行业及知识产权相关的法律实务工作经验。涉及行业领域:互联网、软件和信息技术、文化传媒、教育培训、医疗健康等行业。

业务领域:投资和贸易、知识产权保护和合规、商事争议解决

联系方式:18900996113(同微信)

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-05-13 02:25:35 HTTP/2.0 GET : https://g.sjds.net/a/458364.html
  2. 运行时间 : 0.157095s [ 吞吐率:6.37req/s ] 内存消耗:4,442.27kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=b7f33fd5c9b0bbe819fe58a8b1275adf
  1. /yingpanguazai/ssd/ssd1/www/g.sjds.net/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/g.sjds.net/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/g.sjds.net/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/g.sjds.net/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/g.sjds.net/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/g.sjds.net/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/g.sjds.net/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/g.sjds.net/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/g.sjds.net/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/g.sjds.net/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/g.sjds.net/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/g.sjds.net/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/g.sjds.net/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/g.sjds.net/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/g.sjds.net/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/g.sjds.net/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/g.sjds.net/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/g.sjds.net/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/g.sjds.net/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/g.sjds.net/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/g.sjds.net/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/g.sjds.net/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/g.sjds.net/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/g.sjds.net/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/g.sjds.net/runtime/temp/8321bd4d2de6fe7dffb246d4ae0c61fd.php ( 12.06 KB )
  140. /yingpanguazai/ssd/ssd1/www/g.sjds.net/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000706s ] mysql:host=127.0.0.1;port=3306;dbname=g_sjds;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000701s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.007521s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.001920s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000558s ]
  6. SELECT * FROM `set` [ RunTime:0.000213s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000593s ]
  8. SELECT * FROM `article` WHERE `id` = 458364 LIMIT 1 [ RunTime:0.001577s ]
  9. UPDATE `article` SET `lasttime` = 1778610335 WHERE `id` = 458364 [ RunTime:0.008102s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000481s ]
  11. SELECT * FROM `article` WHERE `id` < 458364 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.008805s ]
  12. SELECT * FROM `article` WHERE `id` > 458364 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000498s ]
  13. SELECT * FROM `article` WHERE `id` < 458364 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001686s ]
  14. SELECT * FROM `article` WHERE `id` < 458364 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001832s ]
  15. SELECT * FROM `article` WHERE `id` < 458364 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.003454s ]
0.158715s