tp框架部署在新浪sae上报错,无法加载C()函数

heshan100 2016-10-23 09:46:08
最近用tp3.2.3做了一个web网站部署在新浪sae上,用的环境是php7.0。然后上传代码包之后,输入域名发现sae日志中心报错无法加载C()函数,这是TP框架自带的系统函数,怎么会这样?具体报错代码如下:
182.100.57.5 [23-Oct-2016:09:33:33 +0800] PHP Fatal error: Uncaught Error: Call to undefined function Think\C() in /data1/www/htdocs/553/fiachra/1/pnp/ThinkPHP/Library/Think/Think.class.php:304#012Stack trace:#012#0 /data1/www/htdocs/553/fiachra/1/pnp/ThinkPHP/Library/Think/Think.class.php(273): Think\Think::halt(Array)#012#1 [internal function]: Think\Think::fatalError()#012#2 {main}#012 thrown in /data1/www/htdocs/553/fiachra/1/pnp/ThinkPHP/Library/Think/Think.class.php on line 304 bx188
然后我找到报错代码发现是halt($error)函数,于是我dump($error),发现错误是来自于:TP框架中Log.class.php中的C()无法加载,为call undefined Think/C()
static function record($message,$level=self::ERR,$record=false) {
if($record || false !== strpos(C('LOG_LEVEL'),$level)) {
self::$log[] = "{$level}: {$message}\r\n";
}
}

1.部署时index.php中已经关闭了app_debug。
2.删除了runtime中的所有缓存文件。
以上步骤都没有用,于是我下载一个新的TP框架放入服务器中,发现也是报同样的错误。
...全文
1133 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
King逍灬遥 2019-01-30
  • 打赏
  • 举报
回复
1146:Table 'app_liu0118.sp_plugins' doesn't exist [ SQL语句 ] : SHOW COLUMNS FROM `sp_plugins` 错误位置 FILE: /data1/www/htdocs/143/liu0118/1/thinkphp/Core/Library/Think/Db/Driver.class.php  LINE: 350 TRACE #0 /data1/www/htdocs/143/liu0118/1/thinkphp/Core/Library/Think/Db/Driver.class.php(350): E('1146:Table 'app...') #1 /data1/www/htdocs/143/liu0118/1/thinkphp/Core/Library/Think/Db/Driver.class.php(180): Think\Db\Driver->error() #2 /data1/www/htdocs/143/liu0118/1/thinkphp/Core/Library/Think/Db/Driver/Mysql.class.php(56): Think\Db\Driver->query('SHOW COLUMNS FR...') #3 /data1/www/htdocs/143/liu0118/1/thinkphp/Core/Library/Think/Model.class.php(134): Think\Db\Driver\Mysql->getFields('sp_plugins') #4 /data1/www/htdocs/143/liu0118/1/thinkphp/Core/Library/Think/Model.class.php(122): Think\Model->flush() #5 /data1/www/htdocs/143/liu0118/1/thinkphp/Core/Library/Think/Model.class.php(1454): Think\Model->_checkTableInfo() #6 /data1/www/htdocs/143/liu0118/1/thinkphp/Core/Library/Think/Model.class.php(97): Think\Model->db(0, '', true) #7 /data1/www/htdocs/143/liu0118/1/thinkphp/Core/Common/functions.php(645): Think\Model->__construct('Plugins', '', '') #8 /data1/www/htdocs/143/liu0118/1/application/Common/Behavior/InitHookBehavior.class.php(17): M('Plugins') #9 /data1/www/htdocs/143/liu0118/1/thinkphp/Core/Library/Think/Hook.class.php(153): Common\Behavior\InitHookBehavior->run(NULL) #10 /data1/www/htdocs/143/liu0118/1/thinkphp/Core/Library/Think/Hook.class.php(89): Think\Hook::exec('Common\\Behavior...', 'app_init', NULL) #11 /data1/www/htdocs/143/liu0118/1/thinkphp/Core/Library/Think/App.class.php(194): Think\Hook::listen('app_init') #12 /data1/www/htdocs/143/liu0118/1/thinkphp/Core/Library/Think/Think.class.php(120): Think\App::run() #13 /data1/www/htdocs/143/liu0118/1/thinkphp/Core/ThinkPHP.php(97): Think\Think::start() #14 /data1/www/htdocs/143/liu0118/1/index.php(56): require('/data1/www/htdo...') #15 {main}
horizon_zpy 2019-01-30
  • 打赏
  • 举报
回复
新浪SAE是不能写磁盘空间的,所以,不能用缓存,除非用新浪的api写内存缓存。
heshan100 2016-10-23
  • 打赏
  • 举报
回复
引用 5 楼 xuzuning 的回复:
TP for SAE 只比 TP 多一个类 当然在设置工作模式时,要选 SAE。 这在 TP 的开发手册中都说的很清楚了
我去看看,我第一次使用TP部署,所以有些不了解。之前都是在本地做。工作模式是什么?
xuzuning 2016-10-23
  • 打赏
  • 举报
回复
TP for SAE 只比 TP 多一个类 当然在设置工作模式时,要选 SAE。 这在 TP 的开发手册中都说的很清楚了
heshan100 2016-10-23
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning 的回复:
SAE 的 php 什么时候升到 7 啦?请你核实一下 TP 需要写临时文件,这对 SAE 免费用户是做不到的 即便是收费用户(虚拟文件系统和内存缓存是收费的),也要使用 TP 的 for SAE 版本 SAE 提供了经他改造的 TP 供免费用户使用(当然略有差异)
我不是用的那个免费的,我是那个可以FTP上传文件的(免费的只能通过GIT SVN进行部署) 我昨天在创建应用的时候是可以选择PHP 5.3 5.6 7.0三个的。 那按照您的意思是,如果我想继续在这上面运行,需要下载TP for SAE...或者能推荐一个更好的服务器商吗?谢谢了!
xuzuning 2016-10-23
  • 打赏
  • 举报
回复
SAE 的 php 什么时候升到 7 啦?请你核实一下 TP 需要写临时文件,这对 SAE 免费用户是做不到的 即便是收费用户(虚拟文件系统和内存缓存是收费的),也要使用 TP 的 for SAE 版本 SAE 提供了经他改造的 TP 供免费用户使用(当然略有差异)
heshan100 2016-10-23
  • 打赏
  • 举报
回复
大哥们大神们有碰到类似问题的吧
heshan100 2016-10-23
  • 打赏
  • 举报
回复
引用 7 楼 heshan100 的回复:
[quote=引用 5 楼 xuzuning 的回复:] TP for SAE 只比 TP 多一个类 当然在设置工作模式时,要选 SAE。 这在 TP 的开发手册中都说的很清楚了
你好,经过我一番折腾,现在报这个错了: _STORAGE_WRITE_ERROR_:./Application/Runtime/Cache/Web/ae3e3553a8e8c19d78c414023b504955.php 错误位置 FILE: /data1/www/htdocs/553/fiachra/1/page/ThinkPHP/Library/Think/Storage/Driver/Sae.class.php  LINE: 90 TRACE #0 /data1/www/htdocs/553/fiachra/1/page/ThinkPHP/Library/Think/Storage/Driver/Sae.class.php(90): E('_STORAGE_WRITE_...') #1 [internal function]: Think\Storage\Driver\Sae->put('./Application/R...', '1477229709 #2 /data1/www/htdocs/553/fiachra/1/page/ThinkPHP/Library/Think/Storage.class.php(37): call_user_func_array(Array, Array) #3 /data1/www/htdocs/553/fiachra/1/page/ThinkPHP/Library/Think/Template.class.php(114): Think\Storage::__callstatic('put', Array) #4 /data1/www/htdocs/553/fiachra/1/page/ThinkPHP/Library/Think/Template.class.php(76): Think\Template->loadTemplate('./Application/W...', '') #5 /data1/www/htdocs/553/fiachra/1/page/ThinkPHP/Library/Behavior/ParseTemplateBehavior.class.php(32): Think\Template->fetch('./Application/W...', Array, '') 是不是跟缓存有关?是不是要初始化memcache[/quote] 数据库和缓存都初始化了,还有stroage也是,还是报同样的错
heshan100 2016-10-23
  • 打赏
  • 举报
回复
关于TP中Log的报错如下: 182.100.57.5 [23-Oct-2016:09:33:33 +0800] PHP Fatal error: Uncaught Error: Call to undefined function Think\C() in /data1/www/htdocs/553/fiachra/1/pnp/ThinkPHP/Library/Think/Log.class.php:52#012Stack trace:#012#0 /data1/www/htdocs/553/fiachra/1/pnp/ThinkPHP/Library/Think/Think.class.php(227): Think\Log::record('Call to undefin...', 'ERR')#012#1 [internal function]: Think\Think::appException(Object(Error))#012#2 {main}#012 thrown in /data1/www/htdocs/553/fiachra/1/pnp/ThinkPHP/Library/Think/Log.class.php on line 52 bx188
heshan100 2016-10-23
  • 打赏
  • 举报
回复
引用 5 楼 xuzuning 的回复:
TP for SAE 只比 TP 多一个类 当然在设置工作模式时,要选 SAE。 这在 TP 的开发手册中都说的很清楚了
你好,经过我一番折腾,现在报这个错了: _STORAGE_WRITE_ERROR_:./Application/Runtime/Cache/Web/ae3e3553a8e8c19d78c414023b504955.php 错误位置 FILE: /data1/www/htdocs/553/fiachra/1/page/ThinkPHP/Library/Think/Storage/Driver/Sae.class.php  LINE: 90 TRACE #0 /data1/www/htdocs/553/fiachra/1/page/ThinkPHP/Library/Think/Storage/Driver/Sae.class.php(90): E('_STORAGE_WRITE_...') #1 [internal function]: Think\Storage\Driver\Sae->put('./Application/R...', '1477229709 #2 /data1/www/htdocs/553/fiachra/1/page/ThinkPHP/Library/Think/Storage.class.php(37): call_user_func_array(Array, Array) #3 /data1/www/htdocs/553/fiachra/1/page/ThinkPHP/Library/Think/Template.class.php(114): Think\Storage::__callstatic('put', Array) #4 /data1/www/htdocs/553/fiachra/1/page/ThinkPHP/Library/Think/Template.class.php(76): Think\Template->loadTemplate('./Application/W...', '') #5 /data1/www/htdocs/553/fiachra/1/page/ThinkPHP/Library/Behavior/ParseTemplateBehavior.class.php(32): Think\Template->fetch('./Application/W...', Array, '') 是不是跟缓存有关?是不是要初始化memcache
附录c 编译程序实验 实验目的:用c语言对一个简单语言的子集编制一个一遍扫描的编译程序,以加深对编译原理的理解,掌握编译程序的实现方法和技术。 语法分析 C2.1 实验目的 编制一个递归下降分析程序,实现对词法分析程序所提供的单词序列的语法检查和结构分析. C2.2 实验要求 利用C语言编制递归下降分析程序,并对简单语言进行语法分析. C2.2.1待分析的简单语言的语法 实验目的 通过上机实习,加深对语法制导翻译原理的理解,掌握将语法分析所识别的语法成分变换为中间代码的语义翻译方法. 实验要求 采用递归下降语法制导翻译法,对算术表达式、赋值语句进行语义分析并生成四元式序列。 实验的输入和输出 输入是语法分析提供的正确的单词串,输出为三地址指令形式的四元式序列。 例如:对于语句串 begin a:=2+3*4;x:=(a+b)/c end# 输出的三地址指令如下: (1) t1=3*4 (2) t2=2+t1 (3) a=t2 (4) t3=a+b (5) t4=t3/c (6) x=t4 算法思想 1设置语义过程 (1) emit(char *result,char *arg1,char *op,char *ag2) 该函数功能是生成一个三地址语句送到四元式表中。 四元式表的结构如下: struct {char result[8]; char ag1[8]; char op[8]; char ag2[8]; }quad[20]; (2)char *newtemp() 该函数回送一个新的临时变量名,临时变量名产生的顺序为T1,T2,…. Char *newtemp(void) { char *p; char m[8]; p=(char *)malloc(8); k++; itoa(k,m,10); strcpy(p+1,m); p[0]=’t’; return(p); } (2)主程序示意图如图c.10所示。 (2) 函数lrparser在原来语法分析的基础上插入相应的语义动作:将输入串翻译成四元式序列。在实验中我们只对表达式、赋值语句进行翻译。 语义分析程序的C语言程序框架 int lrparser() { int schain=0; kk=0; if(syn=1) { 读下一个单词符号; schain=yucu; /调用语句串分析函数进行分析/ if(syn=6) { 读下一个单词符号; if(syn=0 && (kk==0)) 输出(“success”); } else { if(kk!=1 ) 输出 ‘缺end’ 错误;kk=1;} else{输出’begin’错误;kk=1;} } return(schain); int yucu() { int schain=0; schain=statement();/调用语句分析函数进行分析/ while(syn=26) {读下一个单词符号; schain=statement(); /调用语句分析函数进行分析/ } return(schain); } int statement() { char tt[8],eplace[8]; int schain=0; {switch(syn) {case 10: strcpy(tt,token); scanner(); if(syn=18) {读下一个单词符号; strcpy(eplace,expression()); emit(tt,eplace,””,””); schain=0; } else {输出’缺少赋值号’的错误;kk=1; } return(schain); break; } } char *expression(void) {char *tp,*ep2,*eplace,*tt; tp=(char *)malloc(12);/分配空间/ ep2=(char *)malloc(12); eplace=(char *)malloc(12); tt =(char )malloc(12); strcpy(eplace,term ());/调用term分析产生表达式计算的第一项eplace/ while(syn=13 or 14) { 操作符 tt= ‘+’或者‘—’; 读下一个单词符号; strcpy(ep2,term());/调用term分析产生表达式计算的第二项ep2/ strcpy(tp,newtemp());/调用newtemp产生临时变量tp存储计算结果/ emit(tp,eplace,tt,ep2);/生成四元式送入四元式表/ strcpy(eplace,tp); } return(eplace); } char *term(void)/仿照函数expression编写/ char *factor(void) {char *fplace; fplace=(char *)malloc(12); strcpy(fplace, “ ”); if(syn=10) {strcpy(fplace,,token);/将标识符token的值赋给fplace/ 读下一个单词符号; } else if(syn=11) {itoa(sum,fplace,10); 读下一个单词符号; } else if (syn=27) {读下一个单词符号; fplace=expression();/调用expression分析返回表达式的值/ if(syn=28) 读下一个单词符号; else{输出‘}’错误;kk=1; } } else{输出‘(’错误;kk=1; } return(fplace); }
ThinkPHP 3.0正式版完全开发手册 CHM格式 如果下载解压后无显示,请单击右键->属性:单击常规标签下方的“解除锁定”,然后“应用”,“确定”,即可查看 -------------------- 华丽的分割线 ----------------------- ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,众多的典型案例确保可以稳定用于商业以及门户级的开发。 经过6年的不断积累和重构,3.0版本又是一个新的里程碑版本,在框架底层的定制和扩展方面趋于完善,使得应用的开发范围和需求适应度更加扩大,能够满足不同程度的开发人员的需求。而且引入了全新的CBD(核心+行为+驱动)架构模式,旨在打造DIY框架和AOP编程体验,让ThinkPHP能够在不同方面都能快速满足项目和应用的需求,并且正式引入SAE、REST和Mongo支持。 使用ThinkPHP,你可以更方便和快捷的开发和部署应用。当然不仅仅是企业级应用,任何PHP应用开发都可以从ThinkPHP的简单和快速的特性中受益。ThinkPHP本身具有很多的原创特性,并且倡导大道至简,开发由我的开发理念,用最少的代码完成更多的功能,宗旨就是让WEB应用开发更简单、更快速。为此ThinkPHP会不断吸收和融入更好的技术以保证其新鲜和活力,提供WEB应用开发的最佳实践!经过6年来的不断重构和改进,ThinkPHP达到了一个新的阶段,能够满足企业开发中复杂的项目需求,足以达到企业级和门户级的开发标准。 ThinkPHP遵循Apache2开源许可协议发布,意味着你可以免费使用ThinkPHP,甚至允许把你基于ThinkPHP开发的应用开源或商业产品发布/销售。

4,251

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧