我正在尝试使用 wamp 2、PHP 5.3 和 CodeIgniter 1.7.2 在我的 localhost 上使用 APC(替代 PHP 缓存),但是如果我打开 cache_by_default 并启用 apc.stat 服务器将崩溃并且我收到以下错误:
[apc-error] 无法在第 127 行的 C:\wamp\www\k\mvc\codeigniter\Common.php 中重新声明类 ci_benchmark。
我能做些什么来解决这个问题?
我正在尝试使用 wamp 2、PHP 5.3 和 CodeIgniter 1.7.2 在我的 localhost 上使用 APC(替代 PHP 缓存),但是如果我打开 cache_by_default 并启用 apc.stat 服务器将崩溃并且我收到以下错误:
[apc-error] 无法在第 127 行的 C:\wamp\www\k\mvc\codeigniter\Common.php 中重新声明类 ci_benchmark。
我能做些什么来解决这个问题?
当你禁用 apc.stat 时,apc 似乎有相对路径的问题。CodeIgniter 在主 index.php 文件中使用相对路径,所以它会破坏一些东西。
打开 index.php 并更改它:
$system = '../system';
对此:
$system = '/var/www/system';
用您的服务器到 CodeIgniter 系统文件夹的完整路径替换“/var/www/”。
您是否与该用户核对过,看看他是否找到了比不启用 cache_by_default 更好的解决方案?
仅当您启用 apc.cache_by_default 和 apc.stat 时才会发生这种情况?出于性能原因,您不想在生产服务器上运行 apc.stat。并且根本不需要在开发服务器上运行缓存,除了作为迁移到生产之前的最终检查,此时您可以手动清除缓存。
您的生产服务器也是 Windows 盒子吗?我只是问,因为很容易浪费大量时间来跟踪由于在不同环境中开发和运行而导致的错误和配置问题。如果生产环境与您的开发环境有很大不同,这是另一个支持关闭开发箱缓存并继续更有效地利用您的时间的论点 - 开发您的应用程序。
尝试将该函数中的需求更改为 include_once。所以该文件将只包含一次。在这个函数中,我的意思是:system/codeigniter/Common.php: function &load_class($class, $instantiate = TRUE),我想这应该会有所帮助。我认为 APC 正在积极地缓存。