直到opcache启用,才找到PHP5.6类


Laravel PHP5.6 Class not found until opcache enabled

嗨,我有一个Debian Wheezy虚拟机,我最近升级到PHP 5.6,它附带了OpCache从5.4与OpCache单独安装。因为我已经这样做了,我所有的脚本(我使用Laravel btw)已经成为缓存,我不想要,所以我决定禁用opcache。

/etc/php5/mods-available/opcache.ini:

opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=2
opcache.fast_shutdown=1
opcache.enable_cli=0
opcache.enable=0

然而,如果我禁用apache php.ini文件,我得到以下错误:

ReflectionException thrown with message "Class SettingRepository does not exist"

然而,如果我启用它,只是重置opcache任何时候我需要看到新的变化,他们被正确渲染,我可以看到在我的作曲家自动加载类映射,他们被加载,即

'SettingRepository' => $baseDir . '/app/repositories/SettingRepository.php',

你知道我做错了什么吗?我有一种感觉,它的配置在apache是不正确的,但我不太确定,有什么建议吗?

保持开启状态,设置opcache.revalidate_freq=0,重启apache

在你的laravel应用程序中放置以下代码,以禁用laravel的缓存,并且只在调试环境中使用:

if (env('APP_DEBUG')) ini_set('opcache.revalidate_freq', '0');

也许您需要将APP_DEBUG更改为您的环境