我有时遇到
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 :(得分:0)
这看起来像是一个APC问题,我也经常遇到这个问题。我无法100%告诉你发生了什么,但是,在开发过程中,你经常更改,移动或覆盖文件。然后,APC似乎松开了文件的inode,该文件在内部用于处理字节码缓存。
对我来说,“修复”错误的唯一方法是重启网络服务器。
在生产系统上是否也会发生这种情况,您不经常更改源代码?
答案 1 :(得分:0)
似乎是apc的死锁错误http://www.searchtb.com/2014/02/apc-lock-php-fpm.html我向其中一位apc维护者询问了这个问题,他建议我使用opcache而不是apc。