APC 开启有问题,不开启正常

[size="4"]

[size="4"]1407

PHP Error.png

[/size] 当开启APC后,会出现上图中的错误。如果关闭APC,不会出现此问题

请问,这是什么原因造成的呢?又如何怎么解决呢?[/size]

PS. 我的环境:

PHP 5.3.5

APC 3.1.7

Yii 1.17

不用 yiilite.php,直接用 yii.php 看看。

这两应该是一样的东西,也试过了,一样出错的。

报错内容肯定不一样。

问题一样,报错内容一样

好吧,我服了你了。。。。

对于使用yiilite.php,YiiBase::autoload在new CWebApplication和new CComponent时,是不会工作的。只有在你出错的位置,因为yiilite.php里面没有CAttributeCollection,才会触发autoload机制。

而对于yii.php,一开始YiiBase::createWebApplication()的时候,就会autoload CWebApplication。

我要知道,这时候autoload出错没?还是一样等到new CAttributeCollection才出错?

题外话:话说,CAttributeCollection这么重要的东西为啥没在yiilite.php里面?

@Larry Li :

[color="#1C2837"][size="2"]我也纳闷。。。[/size][/color]

很不幸。。还是[color="#1C2837"][size="2"]new CAttributeCollection的地方出错。而[/size][/color][color="#1C2837"][size="2"]YiiBase::createWebApplication()完全正常,如下图:[/size][/color]

[color="#1C2837"][size="2"]1412

pic.png

[/size][/color][color="#1C2837"] [/color]

[size="2"][color="#1C2837"]至于“[/color][/size][color="#1C2837"][size="2"]CAttributeCollection这么重要的东西为啥没在yiilite.php里面”[/size][/color][color="#1C2837"][size="2"], 得问下@qiang了。[/size][/color]

那就是说YiiBase的autoload没有问题,问题出在你的/data/htdocs/yii/framework/collections/CAttributeCollection.php文件上。

开启了apc就没法找到这个文件。你先手工把这个class放到yiilite.php看看会不会有其他的class也出一样的问题。

如果不是,就是这个文件本身的权限还是什么地方出问题了。

现在我情况是这样:

将CAttributeCollection这个Class加到yiilite中,确实在其他文件CLogRouter.php上出现了问题。

我现在将整个目录下所有的文件都设成0777的权限,可还是有问题。

还是不解!!为什么?还有什么可能性吗?还有为什么不用apc就可以访问呢?

既然你都设置了 777,文件权限的问题,可能性很小了。

但不排除 apc 模块本身的权限问题。你可以试一下,在 apc 下使用其他的 php 程序。

如果一样有这些问题,那你的 apc 本身有问题。

apc开启的情况下,访问当前这个程序目录下的apc自带的监控管理php文件没有问题。

另外,跑Yii下的requirements也没有问题(PS. 这里也提示apc模块是通过的)。

从这两看起来,apc应该是没有问题的。当然这两个都没有使用到yii本身的框架,这是唯一的区别。

详细描述一下你的环境,这个关键是要重现你出现问题的场景。

我说的使用 php 程序,是指其他的 php 框架代码,比如 zf 的;或者,你试试 wordpress、drupal、discuz 之类的程序。

我也有相同的问题,求解!

我的环境:

OS:Ubuntu 11.04


php:5.3.5


apc:3.1.8(默认配置)

运行yii自带的helloworld出现如下错误:

Internal Server Error

require(): 1. h->opened_path=[null] h->filename=[/var/www/yii/demos/helloworld/protected/controllers/SiteController.php]

An internal error occurred while the Web server was processing your request. Please contact the webmaster to report this problem.

Thank you.

取消apc模块,则所有demos都正常运行。

在编译APC时以下选项要设置成no

Enable internal debugging in APC [no] :

我把这个设置成yes时出现和LZ一样的错误