之前遇到一个情况,在编译开启的状态下安装了一个新插件,结果前后台都不能访问了,这时想去找找是哪里在控制编译的开启和关闭,先把编译关了来保证系统不报错。按照一般的习惯后台数据或配置都是存在于数据库,但找遍数据库也没发现跟编译有关的数据。因为编译的结果是在/includes/src目录下生产很多文件,去includes文件夹时发现了config.php文件,从命名就可以看出这是一个做配置的文件,经过拿一个本地测试项目做实验,证实了编译的开启与否并不是存在数据库,而是在修改config.php的内容。这个文件的默认内容为
#define('COMPILER_INCLUDE_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR.'src'); #define('COMPILER_COLLECT_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR.'stat');
两句都是注释的状态,在后台开启编译后,第一句会启用,不再注释,
define('COMPILER_INCLUDE_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR.'src'); #define('COMPILER_COLLECT_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR.'stat');
当然,后台关闭后第一句又会回到注释状态,表示当前编译不启用。
回到一开始的问题,现在后台不能访问,也就是不能通过后台来关闭编译,这时我们手动修改config.php文件,将第一句注释,然后刷新页面,会发现已经不再报错,后台也可以进入,进入后可以看到当前确实是编译关闭状态,重写启动编译后,将插件的文件也一起编译,系统不再报错了。
PS:其实不考虑编译到底怎么在运行,还有另一种简单的方法可以处理这个问题,进入/app/etc/modules文件夹,找到新安装插件所对应的xml文件,把状态由true改成false,不启用这个插件,前后台都可以访问了,然后重写启动编译,将文件编译完之后再进xml文件改回true启用插件,问题解决。
再PS:如果在使用编译这个功能,安装新插件时记得先禁用编译,以避免不必要的麻烦。