Php 普雷斯塔商店登记错误

Php 普雷斯塔商店登记错误,php,prestashop,prestashop-1.6,Php,Prestashop,Prestashop 1.6,最近我为我的客户机做了SEO优化,我不得不在服务器上做一些更改,比如使用PHP7和Presta商店管理面板来启用缓存和SEO链接。 我不使用Presta Shop,我也不熟悉它,但其中一些更改破坏了代码中的某些内容。 当新用户尝试注册时,会出现以下错误: Fatal error: Uncaught Error: Access to undeclared static property: Validate::$data in /home/unikalna/public_html/classes/O

最近我为我的客户机做了SEO优化,我不得不在服务器上做一些更改,比如使用PHP7和Presta商店管理面板来启用缓存和SEO链接。 我不使用Presta Shop,我也不熟悉它,但其中一些更改破坏了代码中的某些内容。 当新用户尝试注册时,会出现以下错误:

Fatal error: Uncaught Error: Access to undeclared static property: Validate::$data in /home/unikalna/public_html/classes/ObjectModel.php:1032 Stack trace: #0 /home/unikalna/public_html/controllers/front/AuthController.php(406): ObjectModelCore->validateController() #1 /home/unikalna/public_html/controllers/front/AuthController.php(252): AuthControllerCore->processSubmitAccount() #2 /home/unikalna/public_html/classes/controller/Controller.php(171): AuthControllerCore->postProcess() #3 /home/unikalna/public_html/classes/Dispatcher.php(373): ControllerCore->run() #4 /home/unikalna/public_html/index.php(28): DispatcherCore->dispatch() #5 {main} thrown in /home/unikalna/public_html/classes/ObjectModel.php on line 1032
而且如果它已经注册并试图购买一些东西

版本:PrestaShop™ 1.6.0.6


已解决:Presta Shop 1.6不能与PHP7一起使用/home/unikalna/public\u html/classes/ObjectModel.PHP:1032

旧代码

if (!empty($value) || $value === '0' || ($field == 'postcode' && $value == '0')) {
    if (isset($data['validate']) && !Validate::$data['validate']($value) && (!empty($value) || $data['required'])) {
                $errors[$field] = '<b>'.self::displayFieldName($field, get_class($this), $htmlentities).'</b> '.Tools::displayError('is invalid.');
            } else {
                if (isset($data['copy_post']) && !$data['copy_post']) {
                    continue;
                }
                if ($field == 'passwd') {
                    if ($value = Tools::getValue($field)) {
                        $this->{$field} = Tools::encrypt($value);
                    }
                } else {
                    $this->{$field} = $value;
                }
            }
        }
如果(!empty($value)|$value=='0'| |($field=='postcode'&&&$value='0')){
如果(isset($data['validate'])&&&!validate::$data['validate']($value)&&($empty($value)| |$data['required'])){
$errors[$field]=''.self::displayFieldName($field,get_class($this),$htmlentities)。''.Tools::displayError('is invalid');
}否则{
如果(isset($data['copy_post'])和&!$data['copy_post'])){
继续;
}
如果($field=='passwd'){
如果($value=Tools::getValue($field)){
$this->{$field}=Tools::encrypt($value);
}
}否则{
$this->{$field}=$value;
}
}
}
替换为下面的代码块

新代码

if (!empty($value) || $value === '0' || ($field == 'postcode' && $value == '0')) {
    if (isset($data['validate']) && !Validate::$data['validate']($value) && (!empty($value) || $data['required'])) {
                $errors[$field] = '<b>'.self::displayFieldName($field, get_class($this), $htmlentities).'</b> '.Tools::displayError('is invalid.');
            } else {
                if (isset($data['copy_post']) && !$data['copy_post']) {
                    continue;
                }
                if ($field == 'passwd') {
                    if ($value = Tools::getValue($field)) {
                        $this->{$field} = Tools::encrypt($value);
                    }
                } else {
                    $this->{$field} = $value;
                }
            }
        }
如果(!empty($value)|$value=='0'| |($field=='postcode'&&&$value='0')){
如果(isset($data['validate'])和(!call_user_func('validate::').$data['validate'],$value)&(!empty($value)| |$data['required'])){
$errors[$field]=''.self::displayFieldName($field,get_class($this),$htmlentities)。''.Tools::displayError('is invalid');
}否则{
如果(isset($data['copy_post'])和&!$data['copy_post'])){
继续;
}
如果($field=='passwd'){
如果($value=Tools::getValue($field)){
$this->{$field}=Tools::encrypt($value);
}
}否则{
$this->{$field}=$value;
}
}
}

您正在尝试静态访问Validate类的$data属性。检查它是否在验证类中声明为静态。公共静态函数isMySQLEngine($engine){return(在数组($engine,array('InnoDB','MyISAM'));}公共静态函数isUnixName($data){return preg_match('/^[a-z0-9\.\u-]+$/ui',$data)}公共静态函数isTablePrefix($data){/即使“-”理论上是允许的,如果您没有在表名return preg_match('/^[a-z0-9.]+$/ui',$data);}的周围添加反引号(`),这将被视为语法错误。我想这就是您问我的@AlankarMore?只是复制和粘贴。工作起来很有魅力。谢谢,替换
!验证::$data['Validate']($value)
!调用_user_func('Validate::'。$data['Validate'],$value)
help