Переезд с VDS на свой виртуальный сервер

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
xzen19
Сообщения: 2
Зарегистрирован: 2019.04.05, 10:34
Контактная информация:

Переезд с VDS на свой виртуальный сервер

Сообщение xzen19 »

Добрый день.
Ситуация такая: Мы решили купить маленький сервер и запустили в нем виртуальную машину. Но после копирования всех файлов сайт перестал работать (ругается на namespaces) на новом сервере:

код ошибки виджета:
Unknown Class – yii\base\UnknownClassException
Unable to find 'frontend\widgets\SliderMainPage2' in file: /var/www/admin/data/www/frontend/widgets/SliderMainPage2.php. Namespace missing?
а вот сам виджет

Код: Выделить всё

<?
namespace frontend\widgets;
use common\models\Articles;
use common\models\Category;
use yii\bootstrap\Widget;
use yii\imagine\Image; 
use Imagine\Image\Box;
use Imagine\Image\Point;

class SliderMainPage2 extends  Widget{
	public $limit;
	public $template;
	public function init(){
		parent::init();
		if ($this->limit == null){
			$this->limit = 5;
		}
		if ($this->template == null){
			$this->template = 'sliderMainPage';
		}
	}
	
    public function run(){
		
		if (isset($_SESSION['sait']) && $_SESSION['sait'] == "ar") {
			return '';
		}

        $slides = Articles::find()->where(["onslider"=>1])
			->orderBy("id desc")->limit((int)$this->limit)->all();

		foreach($slides as $slide) {
			if (! file_exists('../web/img_960_400' . $slide->img) && $slide->img) {
				$imagine = Image::getImagine();

				$filename = $slide->img_slider ? $slide->img_slider : $slide->img;
				if (! preg_match('/(.png|.jpg)/', $filename) || !file_exists('../web' . $filename)) continue;
				$image = $imagine->open('../web' . $filename);
				//$image->resize(new Box(960, 400))->save('../web/img_960_400' . $slide->img, ['quality' => 70]);*/
				
				$size = $image->getSize();
				$ratio = $size->getWidth()/$size->getHeight();
				$width = 970;
				$height = round($width/$ratio);
				$point = ($height - 580) / 2;
				if ($point < 0) $point = 0;
				$box = new Box($width, $height);
				$image->resize($box);
				if ($point > 0)
					$image->crop(new Point(0,$point), new Box(970,580));
				$image->save('../web/img_960_400' . $slide->img, ['quality' => 90]);
			}
		}
		return $this->render('sliderMainPage_v5',['slides'=>$slides]);
    }
}
Хочу заметить что на старом vds сервере работает без ошибок. Спасибо

someweb
Сообщения: 552
Зарегистрирован: 2017.03.09, 10:12

Re: Переезд с VDS на свой виртуальный сервер

Сообщение someweb »

Попробуйте тег <? заменить на <?php
Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа. Роберт Шекли.

chesar
Сообщения: 513
Зарегистрирован: 2013.04.10, 17:49

Re: Переезд с VDS на свой виртуальный сервер

Сообщение chesar »

У вас в этом файле короткий открывающий тег <? а нужен <?php
https://www.php.net/manual/ru/ini.core. ... t-open-tag

Рекомендации по коду:
Значения по умолчанию задавайте сразу при описании свойства и метод init() можно будет убрать

Код: Выделить всё

public $limit = 5;
public $template = 'sliderMainPage';
Для работы с сессией используйте Yii::$app->session

Код: Выделить всё

//вместо
if (isset($_SESSION['sait']) && $_SESSION['sait'] == "ar") {
    return '';
 }
// вот так
Yii::$app->session->has('sait') && Yii::$app->session->get('sait')

Аватара пользователя
proctoleha
Сообщения: 279
Зарегистрирован: 2016.07.10, 19:00

Re: Переезд с VDS на свой виртуальный сервер

Сообщение proctoleha »

chesar писал(а):
2019.04.05, 13:50
У вас в этом файле короткий открывающий тег <? а нужен <?php
Так наверняка не только в этом файле такая ситуация. Поэтому в файле php.ini нужно изменить директиву short_open_tag = On
Вот за что я не люблю линукс, так это за свои кривые, временами, руки

Аватара пользователя
ElisDN
Сообщения: 5536
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Переезд с VDS на свой виртуальный сервер

Сообщение ElisDN »

proctoleha писал(а):
2019.04.05, 14:27
Так наверняка не только в этом файле такая ситуация. Поэтому в файле php.ini нужно изменить директиву short_open_tag = On
Надёжнее всё-таки исправить файлы вместо переключения настроек.

xzen19
Сообщения: 2
Зарегистрирован: 2019.04.05, 10:34
Контактная информация:

Re: Переезд с VDS на свой виртуальный сервер

Сообщение xzen19 »

chesar
Учел и принял вашу рекомендацию. Спасибо
proctoleha писал(а):
2019.04.05, 14:27
chesar писал(а):
2019.04.05, 13:50
У вас в этом файле короткий открывающий тег <? а нужен <?php
Так наверняка не только в этом файле такая ситуация. Поэтому в файле php.ini нужно изменить директиву short_open_tag = On
someweb,chesar,proctoleha, ElisDN
Вы были правы. Заменил все открывающиеся <php тег и вуаля. Спасибо

Ответить