Внутренняя ошибка сервера на странице с формой Yii2

Привет, я получаю это сообщение об ошибке, когда пытаюсь получить доступ к своей странице после размещения ее на действующем веб-хосте. К сожалению, эта ошибка не появляется на моих тестовых серверах. Хостинг-сервер имеет версию php 7.1.19 и работает на apache.

    yii\base\ErrorException: An internal server error occurred. in /home/mywebhost/public_html/app/vendor/yiisoft/yii2/base/ErrorHandler.php:317
    Stack trace:
    #0 [internal function]: yii\base\ErrorHandler->handleError(256, 'An internal ser...', '/home/mywebhost/...', 317, Array)
    #1 /home/mywebhost/public_html/app/vendor/yiisoft/yii2/base/ErrorHandler.php(317): trigger_error('An internal ser...', 256)
    #2 /home/mywebhost/public_html/app/vendor/yiisoft/yii2/widgets/ActiveField.php(178): yii\base\ErrorHandler::convertExceptionToError(Object(yii\base\InvalidConfigException))
    #3 /home/mywebhost/public_html/app/views/site/_clients.php(532): yii\widgets\ActiveField->__toString()
    #4 /home/mywebhost/public_html/app/vendor/yiisoft/yii2/base/View.php(336): require('/home/mywebhost/...')
    #5 /home/mywebhost/public_html/app/vendor/yiisoft/yii2/base/View.php(254): yii\base\View->renderPhpFile('/home/mywebhost/...', Array)
    #6 /home/mywebhost/public_html/app/vendor/yiisoft/yii2/base/View.php(156): yii\base\View->renderFile('/home/mywebhost/...', Array, Object(app\controllers\SiteController))
    #7 /home/mywebhost/public_html/app/vendor/yiisoft/yii2/base/Controller.php(384): yii\base\View->render('_clients', Array, Object(app\controllers\SiteController))
    #8 /home/mywebhost/public_html/app/controllers/SiteController.php(72): yii\base\Controller->render('_clients', Array)
    #9 [internal function]: app\controllers\SiteController->actionClientDetails()
    #10 /home/mywebhost/public_html/app/vendor/yiisoft/yii2/base/InlineAction.php(57): call_user_func_array(Array, Array)
    #11 /home/mywebhost/public_html/app/vendor/yiisoft/yii2/base/Controller.php(157): yii\base\InlineAction->runWithParams(Array)
    #12 /home/mywebhost/public_html/app/vendor/yiisoft/yii2/base/Module.php(528): yii\base\Controller->runAction('client-details', Array)
    #13 /home/mywebhost/public_html/app/vendor/yiisoft/yii2/web/Application.php(103): yii\base\Module->runAction('site/client-details', Array)
    #14 /home/mywebhost/public_html/app/vendor/yiisoft/yii2/base/Application.php(386): yii\web\Application->handleRequest(Object(yii\web\Request))
    #15 /home/mywebhost/public_html/index.php(7): yii\base\Application->run()
    #16 {main}
    2018-07-18 01:00:11 [196.103.192.115][-][mbgo1e37qtc3ilqdu6iivk2kv6][info][application] $_GET = [
        'r' => 'client-details'
    ]

В моей активной форме объявлено, что у меня возникла проблема, и все другие формы также объявлены как таковые. Все страницы с формой также возвращают ту же ошибку.

    <?php  
    use yii\widgets\ActiveForm; 
    ?>
    <?php $form = ActiveForm::begin(['options'=>['name'=>'clients','id'=>'client_details']]); ?>
    <div class = "row pb40"> 
        <div class = "clients-form  col-sm-12 col-md-12  col-lg-12 col-xs-12 pull-left">
            <div class = "col-sm-10 col-md-10  col-lg-10 col-xs-10 pull-left">
                <div class = "clearfix"></div>
                <div class = "col-sm-6 col-md-6  col-lg-6 col-xs-6 pull-left">
                <?= $form->field($model, 'national_id')->textInput(['maxlength' => true]) ?>
                </div>
                <div class = "col-sm-6 col-md-6  col-lg-6 col-xs-6 pull-right">
                <?= $form->field($model, 'mobile_phone')->textInput(['maxlength' => true]) ?>
                </div>
                <div class = "clearfix"></div> 
                <div class = "col-sm-6 col-md-6  col-lg-6 col-xs-6 pull-left">
                <?= $form->field($model, 'first_name')->textInput(['maxlength' => true]) ?>
                </div>
                <div class = "col-sm-6 col-md-6  col-lg-6 col-xs-6 pull-right">
                <?= $form->field($model, 'last_name')->textInput(['maxlength' => true]) ?>
                </div>
                <div class = "clearfix"></div>  
                <div class = "col-sm-6 col-md-6  col-lg-6 col-xs-6 pull-left">
                <?= $form->field($model, 'email')->textInput(['maxlength' => true]) ?>
                </div>
                <div class = "col-sm-6 col-md-6  col-lg-6 col-xs-6 pull-right">
                <?= $form->field($model, 'address')->textInput(['maxlength' => true]) ?>
                </div>
                <div class = "clearfix"></div> 
                <div class = "col-sm-6 col-md-6  col-lg-6 col-xs-6 pull-left">
                <?= $form->field($model, 'country')->dropDownList(\yii\helpers\ArrayHelper::map(\app\modules\config\models\Countries::find()->all(), 'name', 'name'));?>  
                </div>
                <div class = "col-sm-6 col-md-6  col-lg-6 col-xs-6 pull-right">
                <?= $form->field($model, 'city')->dropDownList(\yii\helpers\ArrayHelper::map(\app\modules\config\models\Cities::find()->all(), 'name', 'name'));?>  
                </div>   
            </div>
        <div class = "col-sm-2 col-md-2  col-lg-2 col-xs-2 pull-right"> 
            <div class = "col-sm-6 col-md-6  col-lg-6 col-xs-6 pull-right"> 
                <?= $form->field($model, 'payment_channel')->textInput(['maxlength' => true])->hiddenInput()->label('') ?>  
            </div>  
        </div>
    </div>
    <div class = "clearfix"></div> 
    <div id = "explantion"></div>  
        </div> 
        <a href = "#payment" class = "btn btn-dark-main btn-next-tabs pull-right">Next</a>
    <?php $form::end();?>

Ниже также представлена ​​модель, из которой создана форма.

    <?php

    use Yii;

    class Clients extends \yii\db\ActiveRecord {

        public static function getDb() {
            return Yii::$app->get('connect1');
        }

        public function rules() {
            return [
                    [['first_name', 'last_name', 'mobile_phone', 'email', 'address', 'country', 'city', 'national_id'], 'required'],
                    [['display_record', 'payment_channel', 'company_id'], 'integer'],
                    [['total_amount'], 'number'],
                    [['created_on', 'updated_on'], 'safe'],
                    [['first_name', 'last_name', 'mobile_phone', 'email'], 'string', 'max' => 128],
                    [['address', 'country', 'city'], 'string', 'max' => 250],
                    [['national_id'], 'string', 'max' => 50],
            ];
        }

        public function attributeLabels() {
            return [
                'id' => Yii::t('app', 'ID'),
                'first_name' => Yii::t('app', 'First Name'),
                'last_name' => Yii::t('app', 'Last Name'),
                'mobile_phone' => Yii::t('app', 'Mobile Phone'),
                'email' => Yii::t('app', 'Email'),
                'address' => Yii::t('app', 'Address'),
                'country' => Yii::t('app', 'Country'),
            ];
        }

        public static function find() {
            return new ClientsQuery(get_called_class());
        }

        public function getName() {
            return $this->first_name . ' ' . $this->last_name;
        }

    } 

А ниже - контроллер, с которым я работаю.

    <?php
    namespace app\controllers; 
    use yii\filters\AccessControl;
    use yii\web\Controller; 
    use yii\filters\VerbFilter;  

    class SiteController extends Controller {

        /**
         * {@inheritdoc}
         */ 
        public $layout = "//Public"; 

        public function behaviors() {
            return [
                'access' => [
                    'class' => AccessControl::className(),
                    'only' => ['logout'],
                    'rules' => [
                        [
                            'actions' => ['logout'],
                            'allow' => true,
                            'roles' => ['*'],
                        ],
                    ],
                ],
                'verbs' => [
                    'class' => VerbFilter::className(),
                    'actions' => [
                        'logout' => ['post'],
                    ],
                ],
            ];
        }

        /**
         * {@inheritdoc}
         */
        public function actions() {
            return [
                'error' => [
                    'class' => 'yii\web\ErrorAction',
                ],
                'captcha' => [
                    'class' => 'yii\captcha\CaptchaAction',
                    'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
                ],
            ];
        }


        /**
         * Displays homepage.
         *
         * @return string
         */
        public function actionIndex()
        { 
            return $this->render('_home_content');
        }

        public function actionClientsDetails()
        { 
            $model =  new \app\models\Clients(); 
            $model->payment_channel = 4; 
            return $this->render('_clients',['model'=> $model]);
        }

        public function actionOurGallery()
        {
            return $this->render('_gallery');
        } 
        /**
         * Displays about page.
         *
         * @return string
         */
        public function actionAbout() {
            return $this->render('about');
        }

    }

предполагаю, что вы жестко запрограммировали путь к файлу вашего тестового сервера, и путь к файлу на вашем живом сервере отличается

Joshua 18.07.2018 07:49

Единственное, что выделяется, - это InvalidConfigException, поэтому вам следует дважды проверить свою конфигурацию.

Phil 18.07.2018 07:53

@Joshua, у меня нет жестких кодовых путей, они выбираются динамически в Yii2

Paul Wakhungu 18.07.2018 07:55

@PaulWakhungu Можете ли вы добавить htmls активной формы в свой вопрос?

Manikandan S 18.07.2018 07:57

@ManikandanS Я добавил это в редактирование

Paul Wakhungu 18.07.2018 08:09

@PaulWakhungu Думаю, проблема здесь - app / views / site / _clients.php (532): yii \ widgets \ ActiveField -> __ toString (). В вашем файле шаблона _clients.php в строке 532 у вас есть какое-то активное поле формы, которое имеет неправильную конфигурацию. Пожалуйста, проверьте себя в этой строке или опубликуйте всю форму, я скажу, что вызывает проблему;)

Manikandan S 18.07.2018 08:16

Эта строка относится к <?= $form->field($model, 'national_id')->textInput(['maxlength' => true]) ?>.

Paul Wakhungu 18.07.2018 08:24

@PaulWakhungu кажется правильным. Если ваша форма невелика, добавьте в свой вопрос всю форму. будет полезно выяснить проблему.

Manikandan S 18.07.2018 08:40

Позвольте нам продолжить обсуждение в чате.

Manikandan S 18.07.2018 09:01

@PaulWakhungu версия php вашего тестового сервера и версия php нового хостинг-сервера совпадают?

Manikandan S 18.07.2018 09:07

На тестовом сервере установлена ​​версия php 7.1.7, на живом - 7.1.19, но в файле requirements.php написано, что все в порядке.

Paul Wakhungu 18.07.2018 09:17

Пожалуйста, зайдите в чат!

robsch 18.07.2018 10:14

@PaulWakhungu, пожалуйста, покажите эту строчку: /home/mywebhost/public_html/app/controllers/SiteController.p‌​hp(72)

FeR-S 18.07.2018 11:44

Это строка, загружающая форму 'return $ this-> render (' _ clients ', [' model '=> $ model]);'

Paul Wakhungu 18.07.2018 11:54

А как насчет этого: app / views / site / _clients.php (532)?

FeR-S 18.07.2018 12:01

Именно эта строчка здесь <?= $form->field($model, 'national_id')->textInput(['maxlength' => true]) ?>

Paul Wakhungu 18.07.2018 12:04
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
16
1 258
2

Ответы 2

После долгих обсуждений с @robsch в чате было обнаружено, что проблема заключалась в отсутствии каталога 'assets'. Я создал папку 'assets', и все вернулось в норму.

Я также столкнулся с этой ошибкой, когда хотел использовать капчу в качестве виджета, и действие капчи имело ошибку.

<?php 
echo $register_form->field($login_model, 'verifyCode')->widget(Captcha::className(), [
                'captchaAction' => '/core/frontend/default/captcha',
                'template' => '<div class = "row"><div class = "col-sm-6">{input}</div><div class = "col-sm-6">{image} <a href = "javascript:;" id = "refresh-captcha"><span class = "fa fa-refresh"></span></a></div></div>',
                'imageOptions' => [
                    'id' => 'my-captcha-image',
                    'style' => 'height: 35px',
                ],
            ]);
?>

моя проблема решена, когда я решил ошибку на маршруте captchaAction.

Другие вопросы по теме