0

当我通过商店根目录中的命令行单击“shell”文件夹内的编译器状态时,它返回编译器已启用,以便在管理员中启用,但是当我在我的 Magento 站点的根文件夹中检查时返回状态为禁用!

$/var/www/magento# php shell/compiler.php 状态
编译器状态:禁用
编译状态:已编译
收集的文件数:6764
编译范围数:4
$/var/www/magento# cd shell/
$/var/www/magento/shell# php compiler.php 状态
编译器状态:已启用
编译状态:已编译
收集的文件数:6764
编译范围数:4

尽管我尝试通过关闭编译器模式、重新编译然后重新打开来解决此问题,但我得到了相同的结果!

4

3 回答 3

0

编辑includes/config.php并注释掉这两define行。这就是 Magento 为启用/禁用编译器所做的一切。

http://svn.magentocommerce.com/source/branches/1.7/includes/config.php

代码片段来自shell/compiler.php

$compiler = $this->_getCompiler();
$compilerConfig = '../includes/config.php';
if (file_exists($compilerConfig)) {
    include $compilerConfig;
}
$status = defined('COMPILER_INCLUDE_PATH') ? 'Enabled' : 'Disabled';

此外,我建议只使用APC或任何其他 OPCode 缓存,因为它可以解决同样的问题,而且不会让人头疼。

于 2012-10-10T15:04:19.657 回答
0

这“按设计工作”(除了设计不佳)。compiler.php这是确定状态的代码位。

$compilerConfig = '../includes/config.php';
if (file_exists($compilerConfig)) {
    include $compilerConfig;
}
$status = defined('COMPILER_INCLUDE_PATH') ? 'Enabled' : 'Disabl    ed';

关键是$compilerConfig = '../includes/config.php';. 此路径从当前目录上一个目录以查找config.php. PHP shell 脚本的工作目录是从中调用它的目录,而不是它所在的目录。所以你说

$/var/www/magento# php shell/compiler.php state

该脚本在

/var/www/magento/../includes/config.php

或者

/var/www/includes/config.php

因为它没有找到一个,它假定一个禁用状态。

于 2012-10-10T17:11:29.363 回答
0

我意识到这是一篇旧帖子,但看起来这个错误仍然存​​在于 Magento 1.9 中。如果您希望能够从其他目录检查您的编译器状态,只需修改此行:

$compilerConfig = '../includes/config.php';

改成

$compilerConfig = dirname(__FILE__).'/../includes/config.php';
于 2015-02-20T14:56:43.067 回答