我们发现我们收到以下500错误的情况:
File xyz.php does not exist or class "xyz" was not found in the file at () in SF_ROOT_DIR/lib/vendor/Zend/Loader.php line 107 ...
其中xyz ==
Memcache(尝试在命令行上使用symfony cc时)
或
sfDoctrineAdminGenerator(使用旧的AdminGenerator生成的CMS页面时)。
我们使用Propel,但是Loader.php正在尝试加载仅用于Doctrine的类。
目前我正在使用一个肮脏的黑客,我请求Loader.php检查文件是否是这两种情况中的任何一种,如果是这样,只需返回而不是尝试加载它。显然,这在长期内是不可接受的。
有没有人遇到过这个,你是怎么解决的?
编辑添加:
我们有:
class ProjectConfiguration extends sfProjectConfiguration
{
public function setup()
{
// for compatibility / remove and enable only the plugins you want
$this->enableAllPluginsExcept(array('sfDoctrinePlugin'));
}
}
我们在顶级配置目录中有一个propel.ini文件。这只是在过去四周左右开始的,而且我们已经有一年以上的稳定版本了。我很确定Doctrine是完全禁用的。
答案 0 :(得分:0)
我唯一能想到的是确保在项目配置中禁用Doctrine ...
答案 1 :(得分:0)
这可能是Symfony的自动加载器和Zend之间的冲突吗?尝试将以下内容添加到ProjectConfiguration.class.php:
set_include_path(sfConfig::get('sf_lib_dir') . '/vendor' . PATH_SEPARATOR . get_include_path());
require_once sfConfig::get('sf_lib_dir').'/vendor/Zend/Loader/Autoloader.php';
$loader = Zend_Loader_Autoloader::getInstance();
我使用上面的Zend Lucene并且它有效。如果这没有帮助,这些Zend and Symfony slides中的某些内容可能有所帮助。
答案 2 :(得分:0)
清除缓存:)并确保您的index.php具有正确的包含文件。