2011-12-19 49 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

相關問題