У меня проблема со скриптом CakePHP.Это было написано с помощью CakePHP версии 2.5.1.
Я получаю фатальную ошибку: Фатальная ошибка: невозможно вызвать конструктор в /lib/Cake/Controller/CakeErrorController.php в строке 46.
Исходный файл AppController.php выглядел так:
<?php
if (session_id() == '') {
session_start();
}
class AppController
{
public $components = array('Auth');
public $helpers = array(
0 => 'Form',
'Html' => array('className' => 'MyHtml')
);
public function beforeFilter()
{
global $loguser;
global $username;
global $siteChanges;
global $paypalAdaptive;
global $user_level;
global $setngs;
global $price;
global $colors;
global $parent_categori;
global $googlecode;
parent::beforeFilter();
$this->Auth->loginAction = array('controller' => '/', 'action' => '/login');
$this->Auth->logoutRedirect = array('controller' => '/', 'action' => '/');
$this->Auth->authenticate = array(
AuthComponent::ALL => array(
'fields' => array('username' => 'email', 'password' => 'password'),
'userModel' => 'Users.User'
),
0 => 'Form'
);
if ($this->params['controller'] == 'api') {
$this->Auth->allow();
}
if ($this->params['controller'] == 'fantasyhelps') {
$this->Auth->allow();
}
if ($this->params['controller'] == 'paypals') {
App::import('Vendor', 'PayPal');
}
$this->Auth->allow(, , 'login', 'signup', 'emailverification', 'verification', 'index', 'setpassword', 'userprofiles', 'viewshops', 'addto', 'press', 'about', 'toppeople', 'findpeople', 'storeprofiles', 'getstoreprofile', 'listings', 'show_color', 'show_price', 'showByCategory', 'getMorePosts', 'ipnprocess', 'getmorepricecolor', 'getItemByCategory', 'ajaxSearch', 'captcha', 'forgotpassword', 'showByRelation', 'getItemByRelation', 'faq', 'contact', 'item_comments', 'changePassword', 'copyrights', 'termsofsale', 'termsofservice', 'termsofmerchant', 'privacy', 'loginwith', 'loginwithtwitter', 'changecurrency', 'downimage', 'sitemaintenance', 'getviewmore', 'customviewmore', 'orderstatus', 'getsizeqty', 'searches', 'getmoregallery', 'viewitemdesc', 'followersList', 'getmoreprofile', 'getmorestorycomment', 'followingList', 'twittlogin_save', 'item_favorited', 'merupdate', 'custupdatend', 'testing', 'bookmarklet', 'getmorecomments', 'adaptiveipnprocess', 'additemusingurl', 'giftcardipnIpn', 'ggipn', 'ggcronjob', 'nearme', 'getMorenearme', 'gifts', 'story');
$loguser = $this->Auth->user();
$userid = $loguser[0]['User']['id'];
$username = $loguser[0]['User']['username'];
$first_name = $loguser[0]['User']['first_name'];
$username_url = $loguser[0]['User']['username_url'];
$user_level = $loguser[0]['User']['user_level'];
$profile_image = $loguser[0]['User']['profile_image'];
$this->set('loguser', $loguser);
$this->set('username', $username);
$this->set('username_url', $username_url);
$this->set('user_level', $user_level);
$this->set('first_name', $first_name);
$this->set('profile_image', $profile_image);
$this->set('currentaction', $this->params['action']);
$this->loadModel('User');
$user_datas = $this->User->findById($userid);
if (!empty($loguser) && empty($user_datas)) {
$this->Auth->logout();
}
$user_status_val = $this->User->find('first', array(
'conditions' => array('User.id' => $userid)
));
$user_status = $user_status_val['User']['user_status'];
if ($user_status == 'disable') {
$this->Session->setFlash(__('Your account has been disabled please contact our support'), 'default', array(), 'bad');
$this->redirect($this->Auth->logout());
$this->redirect('/login');
}
$this->loadModel('Sitesetting');
$this->loadModel('Cart');
$this->loadModel('Orders');
$this->loadModel('Item');
$this->loadModel('Price');
$this->loadModel('Color');
$this->loadModel('Category');
$this->loadModel('Forexrate');
$this->loadModel('Managemodule');
$this->loadModel('Googlecode');
$this->loadModel('Contactseller');
$this->loadModel('Story');
$orderdetails = $this->Orders->find('all', array(
'conditions' => array('Orders.merchant_id' => $userid)
));
$this->set('orderdetails', $orderdetails);
$storyCount = $this->Story->find('count', array(
'conditions' => array('userid' => $userid)
));
$this->set('storyCounts', $storyCount);
$managemoduleModel = $this->Managemodule->find('first');
$this->set('managemoduleModel', $managemoduleModel);
$params = $this->params;
$action = $params['action'];
if ($this->params['controller'] != 'api') {
$this->_setLanguage();
}
if (($action != 'sitemaintenance') && ($action != 'login') && ($this->params['controller'] != 'api')) {
if (!$this->isauthenticated() || ($user_level != 'god')) {
if ($managemoduleModel['Managemodule']['site_maintenance_mode'] == 'yes') {
$this->redirect('/sitemaintenance');
}
}
}
$messageCount = $this->Contactseller->find('count', array(
'conditions' => array(
'OR' => array(
array('merchantid' => $userid, 'sellerread' => 1),
array('buyerid' => $userid, 'buyerread' => 1)
)
)
));
$_SESSION['userMessageCount'] = $messageCount;
if (!isset($_SESSION['language_settings'])) {
$languageJson = file_get_contents(SITE_URL . 'language_settings.json');
$_SESSION['language_settings'] = json_decode($languageJson, true);
$defaultLanguage = $_SESSION['language_settings']['settings']['default'];
Configure::write('Config.language', $defaultLanguage);
}
if (!isset($_SESSION['currency_value'])) {
$forexrateModel = $this->Forexrate->find('first', array(
'conditions' => array('status' => 'default')
));
$_SESSION['currency_symbol'] = $forexrateModel['Forexrate']['currency_symbol'];
$_SESSION['currency_value'] = $forexrateModel['Forexrate']['price'];
$_SESSION['currency_code'] = $forexrateModel['Forexrate']['currency_code'];
$_SESSION['default_currency_code'] = $forexrateModel['Forexrate']['currency_code'];
$_SESSION['default_currency_symbol'] = $forexrateModel['Forexrate']['currency_symbol'];
}
$setngs = $this->Sitesetting->find('all');
$price = ('all');
$forexrateModel = $this->Forexrate->find('all', array(
'conditions' => array('status <>' => 'disable')
));
$colors = $this->Color->find('all');
$UserDetailss = $this->User->findById($userid);
$this->set('UserDetailss', $UserDetailss);
$this->loadModel('Shop');
$sellerDetails = $this->Shop->find('all', array(
'conditions' => array('user_id' => $userid)
));
$this->set('sellerDetails', $sellerDetails);
$shopDetails = $this->Shop->find('first', array(
'conditions' => array('user_id' => $userid)
));
$this->set('shop_name', $shopDetails['Shop']['shop_name']);
$parent_categori = $this->Category->find('all', array(
'conditions' => array('category_parent' => 0)
));
$googlecode = $this->Googlecode->find('all');
if (!empty($userid)) {
if (!empty($carts)) {
foreach ($carts as $crt) {
$itmids[] = $crt['Cart']['item_id'];
}
$itm_datas = $this->Item->find('all', array(
'conditions' => array('Item.id' => $itmids, 'Item.status' => 'publish')
));
$total_itms = count($itm_datas);
$this->set('total_itms', $total_itms);
}
}
$this->set('price', $price);
$this->set('colors', $colors);
$this->set('forexrateModel', $forexrateModel);
$this->set('parent_categori', $parent_categori);
$this->set('googlecode', $googlecode);
$this->set('media_url', $setngs[0]['Sitesetting']['media_url']);
$this->set('setngs', $setngs);
$siteChanges = $setngs[0]['Sitesetting']['site_changes'];
$siteChanges = json_decode($siteChanges, true);
$paypalAdaptive = $setngs[0]['Sitesetting']['paypaladaptive'];
$paypalAdaptive = json_decode($paypalAdaptive, true);
$this->set('siteChanges', $siteChanges);
$_SESSION['site_url'] = SITE_URL;
$_SESSION['media_url'] = SITE_URL;
if (!empty($setngs[0]['Sitesetting']['media_url'])) {
$_SESSION['media_host_name'] = $setngs[0]['Sitesetting']['media_server_hostname'];
$_SESSION['media_url'] = $setngs[0]['Sitesetting']['media_url'];
$_SESSION['media_server_username'] = $setngs[0]['Sitesetting']['media_server_username'];
$_SESSION['media_server_password'] = $setngs[0]['Sitesetting']['media_server_password'];
}
$params = $this->params;
$action = $params['action'];
$this->set('action', $action);
if ($this->params['controller'] != 'api') {
$this->_setLanguage();
}
}
public function isauthenticated()
{
$user = $this->Auth->user();
if (!empty($user)) {
return true;
}
return false;
}
public function isauthorized()
{
$user = $this->Auth->user();
if (($user[0]['User']['user_level'] == 'god') || ($user[0]['User']['user_level'] == 'moderator')) {
return true;
}
return false;
}
public function isauthorizedpersn()
{
$user = ();
if (($user[0]['User']['user_level'] == 'god') || ($user[0]['User']['user_level'] == 'shop')) {
return true;
}
return false;
}
public function _setLanguage()
{
if (isset($this->Cookie) && $this->Cookie->read('lang') && !$this->Session->check('Config.language')) {
$this->Session->write('Config.language', $this->Cookie->read('lang'));
}
else if (isset($this->params['language']) && ($this->params['language'] != $this->Session->read('Config.language'))) {
$this->Session->write('Config.language', $this->params['language']);
$this->Cookie->write('lang', $this->params['language'], false, '20 days');
}
}
}
$config['Settings'] = Configure::read('Settings');
define('SITE_URL', $config['Settings']['SITE_URL']);
define('SITE_NAME', $config['Settings']['SITE_TITLE']);
define('FB_ID', $config['Settings']['FB_ID']);
define('FB_SECRET', $config['Settings']['FB_SECRET']);
define('GOOGLE_ID', $config['Settings']['GOOGLE_ID']);
define('GOOGLE_SECRET', $config['Settings']['GOOGLE_SECRET']);
define('TWITTER_ID', $config['Settings']['TWITTER_ID']);
define('TWITTER_SECRET', $config['Settings']['TWITTER_SECRET']);
define('GMAIL_CLIENT_SECRET', $config['Settings']
['GMAIL_CLIENT_SECRET']);
define('GMAIL_CLIENT_ID', $config['Settings']['GMAIL_CLIENT_ID']);
?>
Первая ошибка указала на эту строку: $ this-> Auth-> allow (,, 'login', 'signup', 'emailverification', поэтому я удалил, и, следовательно, он стал: $ this-> Auth-> allow ('login', 'signup', 'emailverification',
Вторая ошибка указывает на эту строку $ user = (); поэтому я изменил ее на $ user = $this-> Auth-> user ();
Но это изменение с $ user = (); на $ user = $ this-> Auth-> user (); выдает фатальную ошибку: фатальная ошибка: невозможновызов конструктора в /lib/Cake/Controller/CakeErrorController.php в строке 46
Ниже приведено содержимое CakeErrorController.php. Мне сказали, что CakeErrorController.php является основным файлом, поэтому мне не нужноизменить его?
<?php
/**
* Error Handling Controller
*
* Controller used by ErrorHandler to render error views.
*
* CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
* Copyright (c) Cake Software Foundation, Inc.
(http://cakefoundation.org)
*
* Licensed under The MIT License
* For full copyright and license information, please see the
LICENSE.txt
* Redistributions of files must retain the above copyright notice.
*
* @copyright Copyright (c) Cake Software Foundation, Inc.
(http://cakefoundation.org)
* @link http://cakephp.org CakePHP(tm) Project
* @package Cake.Controller
* @since CakePHP(tm) v 2.0
* @license http://www.opensource.org/licenses/mit-license.php MIT
License
*/
App::uses('AppController', 'Controller');
/**
* Error Handling Controller
*
* Controller used by ErrorHandler to render error views.
*
* @package Cake.Controller
*/
class CakeErrorController extends AppController {
/**
* Uses Property
*
* @var array
*/
public $uses = array();
/**
* Constructor
*
* @param CakeRequest $request
* @param CakeResponse $response
*/
public function __construct($request = null, $response = null) {
parent::__construct($request, $response);
$this->constructClasses();
if (count(Router::extensions()) &&
!$this->Components->attached('RequestHandler')
) {
$this->RequestHandler = $this->Components-
>load('RequestHandler');
}
if ($this->Components->enabled('Auth')) {
$this->Components->disable('Auth');
}
if ($this->Components->enabled('Security')) {
$this->Components->disable('Security');
}
$this->_set(array('cacheAction' => false, 'viewPath' => 'Errors'));
}
}
Мне нужна помощь в устранении любых проблем, которые вы заметили с файлом AppController.php. Я новичок в этом.elp будет высоко ценится.Спасибо.