2011-12-19 26 views
2

我有时碰到为什么我会随机遇到这个致命错误(在Yii Framework中)?

Fatal error: require() [<a href='function.require'>function.require</a>]: apc_fcntl_lock failed errno:6 in C:\web\yii\framework\web\CWebApplication.php on line 345 

码方面:

 else 
      $controllerID.='/'; 
     $className=ucfirst($id).'Controller'; 
     $classFile=$basePath.DIRECTORY_SEPARATOR.$className.'.php'; 
     if(is_file($classFile)) 
     { 
      if(!class_exists($className,false)) 
       require($classFile); ////////////THIS IS LINE 345 
      if(class_exists($className,false) && is_subclass_of($className,'CController')) 
      { 
       $id[0]=strtolower($id[0]); 
       return array(
        new $className($controllerID.$id,$owner===$this?null:$owner), 
        $this->parseActionParams($route), 
       ); 
      } 
      return null; 
     } 

相对运行环境:

OS:win2k3. 
PHP Version 5.3.6 
Server API CGI/FastCGI 

apc: 
Version 3.1.8-dev 
APC Debugging Disabled 
MMAP Support Disabled 
Locking type File Locks 
Serialization Support php 
Revision $Revision: 308812 $ 
Build Date Mar 1 2011 13:31:44 

是什么原因造成这个错误?我如何解决它?

回答

0

这看起来像是我不时遇到的APC问题。我无法100%告诉你发生了什么,但是,在开发中你经常改变,移动或覆盖文件。 APC似乎放弃了内部用来处理字节码缓存的文件的inode。

对我来说,“解决”错误的唯一方法是重新启动网络服务器。

这是否也发生在生产系统,你不经常更改源代码?

+0

谢谢。与我遇到的症状完全相同,希望在制作后不会出现。 – LotusH

+0

@LotusH:这个错误信息呢?你还有这个问题吗?我在问,因为在启用Windows Server 2008上的IIS服务器上的APC后启用APC后,我的网站上只显示相同的错误消息。我不太明白,因为我也在自己的机器上使用IIS + Windows 7尝试了它,使用相同版本的PHP,相同版本的MySQL,相同数据和相同版本的APC,它的工作原理没有任何问题。这真的很奇怪:几乎有相同的条件,并且在Windows 7上可以正常工作,但在Windows Server 2008上有问题... – Sk8erPeter

+0

好吧,对不起,我必须撤销2小时前所说的内容。我测试了服务器,以及另一个安装了phpMyAdmin的站点,显示的错误消息与“Unknown on line 0”中的“致命错误:未知:apc_fcntl_lock失败errno:6”相同。禁用APC后,一切都再次运行......但这不是一个解决方案......:\ – Sk8erPeter

相关问题