我是Propel的新手,我需要使用已经安装了Propel(1.6.9)的网站。 我在我的笔记本电脑上工作,没有任何错误。 (耶!)
生成类(在相同的schema.xml和之前的其他相关文件上)之后似乎存在一些差异。 (发现文件大小)当我将这些文件上传到旧文件做得很好的网络托管时,我遇到了一个错误:
Fatal error: Uncaught exception 'PropelException' with message 'Unknown parser class "PropelArrayParser"' in /var/www/vhosts/10/154462/webspace/httpdocs/DOMAIN/vendor/propel/propel1/runtime/lib/parser/PropelParser.php:101
Stack trace:
#0 /var/www/vhosts/10/154462/webspace/httpdocs/DOMAIN/vendor/propel/propel1/runtime/lib/om/BaseObject.php(375): PropelParser::getParser('Array')
#1 /var/www/vhosts/10/154462/webspace/httpdocs/DOMAIN/vendor/propel/propel1/runtime/lib/om/BaseObject.php(424): BaseObject->exportTo('Array', 'fieldName')
#2 /var/www/vhosts/10/154462/webspace/httpdocs/DOMAIN/src/controllers/UsersController.php(26): BaseObject->__call('toArray', Array)
#3 /var/www/vhosts/10/154462/webspace/httpdocs/DOMAIN/src/controllers/UsersController.php(26): User->toArray('fieldName')
#4 /var/www/vhosts/10/154462/webspace/httpdocs/DOMAIN/framework/framework.php(196): require('/var/www/vhosts...')
#5 /var/www/vhosts/10/154462/web in /var/www/vhosts/10/154462/webspace/httpdocs/DOMAIN/vendor/propel/propel1/runtime/lib/parser/PropelParser.php on line 101
错误是指:
$case = new AgencyCosts();
$case->fromArray($_POST, BasePeer::TYPE_FIELDNAME);
$case->save();
所以我认为包含有问题。这就是我将以下内容添加到init.php中的原因:
set_include_path(dirname( DIR )。'/ vendor / propel / propel1 / runtime / lib / parser'.PATH_SEPARATOR.get_include_path());
需要dirname( DIR )。 '/vendor/propel/propel1/runtime/lib/parser/PropelJSONParser.php';
没有任何成功。
init.php(包含完成的地方)可用here。 任何帮助将不胜感激。
答案 0 :(得分:0)
当Propel无法找到类定义时,您将收到此异常。来自Propel的代码:
// PropelParse::getParser
if (!class_exists($class)) {
throw new PropelException(sprintf('Unknown parser class "%s"', $class));
}
Propel生成一个类图文件,其中编写了所有Propel类的路径。看起来你只是包含错误的文件或错误的路径。查看classmap
密钥的配置文件:
$conf['classmap'] = include(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'classmap-<you-project-name>-conf.php');
然后检查该文件的内容。这可能是因为您盲目地将文件从计算机移动到服务器。