cancel
Showing results for 
Search instead for 
Did you mean: 

Problems after Migrating to a New Server/Hosting

Highlighted

Problems after Migrating to a New Server/Hosting

Hello

My url is

https://www.pharmacyway.gr

 

I'm experiencing the following problems after migrating to a new server:

1. Images on Products do not appear, only thumbails do.

https://www.pharmacyway.gr/5021265223848-quest-vitabiotics-tricologic-wellwoman-60bio-active-tablets...

 

2. Slider on Front Page doesn't work

 

3. When I checkout some items, I receive server error

 

4. Can somebody give me some tips? 

 

Thanks 

 

8 REPLIES 8
Highlighted

Re: Problems after Migrating to a New Server/Hosting

Hello @MariosX 

 

This error can be because of having any 3rd party tool integrated with your old server, for example if you are using Cloudflare with same domain on old server, you might need to change the DNS details for new server.

You might have forgot to copy images to new server, because your images are showing 404, you can check at the same path given if images are there or not.

 

Hope it helps !

Problem Solved ? Click on 'Kudos' & Accept as Solution to encourage to write more answers !
Highlighted

Re: Problems after Migrating to a New Server/Hosting

@MariosX ,

seems like on the new server you are running your website from Magento root folder. 

kindly update the website's Document Root to the pub folder. 

 

after switching the DocumentRoot to the pub folder you need to flush the cache and flush the CDN Cache if configured. 

 

kindly Accept as a Solution if this works for you and give Kudos. Smiley Happy 

Highlighted

Re: Problems after Migrating to a New Server/Hosting

Hello! 

Thanks for replying, here's the full story:

I was given a backup gz file and I uploaded & extracted that file to the new hosting service, I was also given an SQL dump and I restored the database with mysql cli. 

Please note that, file:

- app/etc/env.php

was not included in the backup and I had to create a new installation

 

I did what you suggested and the slider was fixed, however what doesn't work yet is:

- Product Images and

- Checkout

 

 

Here's the error I get from var/log/exception  when I try to checkout (buy items from the store):

[2020-11-23 15:19:51] main.CRITICAL: Validate class not found from basename 'Magento\Framework\Validator\EmailAddress' {"exception":"[object] (Zend_Validate_Exception(code: 0): Validate class not found from basename 'Magento\\Framework\\Validator\\EmailAddress' at var/www/vhosts/pharmacyway.gr/httpdocs/vendor/magento/zendframework1/library/Zend/Validate.php:244)"} []/

I found out here:

https://magento.stackexchange.com/questions/296419/how-to-fix-validate-class-not-found-from-basename...

 

and they also mention plesk, which I use that I should add php settings, include_path:

 

/var/www/vhosts/pharmacyway.gr/httpdocs/vendor/magento/zendframework1/library

 

and my include path on plesk is exactly like this:

 

.:/opt/plesk/php/7.1/share/pear:./var/www/vhosts/pharmacyway.gr/httpdocs/vendor/magento/zendframework1/library

 

https://i.imgur.com/M39KLvm.png

 

Here's my Validate.php (if it helps)

 

<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id$
 */

/**
 * @see Zend_Validate_Interface
 */
#require_once 'Zend/Validate/Interface.php';

/**
 * @category   Zend
 * @package    Zend_Validate
 * @copyright  Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate implements Zend_Validate_Interface
{
    /**
     * Validator chain
     *
     * @var array
     */
    protected $_validators = array();

    /**
     * Array of validation failure messages
     *
     * @var array
     */
    protected $_messages = array();

    /**
     * Default Namespaces
     *
     * @var array
     */
    protected static $_defaultNamespaces = array();

    /**
     * Array of validation failure message codes
     *
     * @var array
     * @deprecated Since 1.5.0
     */
    protected $_errors = array();

    /**
     * Adds a validator to the end of the chain
     *
     * If $breakChainOnFailure is true, then if the validator fails, the next validator in the chain,
     * if one exists, will not be executed.
     *
     * @param  Zend_Validate_Interface $validator
     * @param  boolean                 $breakChainOnFailure
     * @return Zend_Validate Provides a fluent interface
     */
    public function addValidator(Zend_Validate_Interface $validator, $breakChainOnFailure = false)
    {
        $this->_validators[] = array(
            'instance' => $validator,
            'breakChainOnFailure' => (boolean) $breakChainOnFailure
            );
        return $this;
    }

    /**
     * Returns true if and only if $value passes all validations in the chain
     *
     * Validators are run in the order in which they were added to the chain (FIFO).
     *
     * @param  mixed $value
     * @return boolean
     */
    public function isValid($value)
    {
        $this->_messages = array();
        $this->_errors   = array();
        $result = true;
        foreach ($this->_validators as $element) {
            $validator = $element['instance'];
            if ($validator->isValid($value)) {
                continue;
            }
            $result = false;
            $messages = $validator->getMessages();
            $this->_messages = array_merge($this->_messages, $messages);
            $this->_errors   = array_merge($this->_errors,   array_keys($messages));
            if ($element['breakChainOnFailure']) {
                break;
            }
        }
        return $result;
    }

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns array of validation failure messages
     *
     * @return array
     */
    public function getMessages()
    {
        return $this->_messages;
    }

    /**
     * Defined by Zend_Validate_Interface
     *
     * Returns array of validation failure message codes
     *
     * @return array
     * @deprecated Since 1.5.0
     */
    public function getErrors()
    {
        return $this->_errors;
    }

    /**
     * Returns the set default namespaces
     *
     * @return array
     */
    public static function getDefaultNamespaces()
    {
        return self::$_defaultNamespaces;
    }

    /**
     * Sets new default namespaces
     *
     * @param array|string $namespace
     * @return null
     */
    public static function setDefaultNamespaces($namespace)
    {
        if (!is_array($namespace)) {
            $namespace = array((string) $namespace);
        }

        self::$_defaultNamespaces = $namespace;
    }

    /**
     * Adds a new default namespace
     *
     * @param array|string $namespace
     * @return null
     */
    public static function addDefaultNamespaces($namespace)
    {
        if (!is_array($namespace)) {
            $namespace = array((string) $namespace);
        }

        self::$_defaultNamespaces = array_unique(array_merge(self::$_defaultNamespaces, $namespace));
    }

    /**
     * Returns true when defaultNamespaces are set
     *
     * @return boolean
     */
    public static function hasDefaultNamespaces()
    {
        return (!empty(self::$_defaultNamespaces));
    }

    /**
     * @param  mixed    $value
     * @param  string   $classBaseName
     * @param  array    $args          OPTIONAL
     * @param  mixed    $namespaces    OPTIONAL
     * @return boolean
     * @throws Zend_Validate_Exception
     */
    public static function is($value, $classBaseName, array $args = array(), $namespaces = array())
    {
        $namespaces = array_merge((array) $namespaces, self::$_defaultNamespaces, array('Zend_Validate'));
        $className  = ucfirst($classBaseName);
        try {
            if (!class_exists($className, false)) {
                #require_once 'Zend/Loader.php';
                foreach($namespaces as $namespace) {
                    $class = $namespace . '_' . $className;
                    $file  = str_replace('_', DIRECTORY_SEPARATOR, $class) . '.php';
                    if (Zend_Loader::isReadable($file)) {
                        Zend_Loader::loadClass($class);
                        $className = $class;
                        break;
                    }
                }
            }

            $class = new ReflectionClass($className);
            if ($class->implementsInterface('Zend_Validate_Interface')) {
                if ($class->hasMethod('__construct')) {
                    $keys    = array_keys($args);
                    $numeric = false;
                    foreach($keys as $key) {
                        if (is_numeric($key)) {
                            $numeric = true;
                            break;
                        }
                    }

                    if ($numeric) {
                        $object = $class->newInstanceArgs($args);
                    } else {
                        $object = $class->newInstance($args);
                    }
                } else {
                    $object = $class->newInstance();
                }

                return $object->isValid($value);
            }
        } catch (Zend_Validate_Exception $ze) {
            // if there is an exception while validating throw it
            throw $ze;
        } catch (Exception $e) {
            // fallthrough and continue for missing validation classes
        }

        #require_once 'Zend/Validate/Exception.php';
        throw new Zend_Validate_Exception("Validate class not found from basename '$classBaseName'");
    }

    /**
     * Returns the maximum allowed message length
     *
     * @return integer
     */
    public static function getMessageLength()
    {
        #require_once 'Zend/Validate/Abstract.php';
        return Zend_Validate_Abstract::getMessageLength();
    }

    /**
     * Sets the maximum allowed message length
     *
     * @param integer $length
     */
    public static function setMessageLength($length = -1)
    {
        #require_once 'Zend/Validate/Abstract.php';
        Zend_Validate_Abstract::setMessageLength($length);
    }

    /**
     * Returns the default translation object
     *
     * @return Zend_Translate_Adapter|null
     */
    public static function getDefaultTranslator($translator = null)
    {
        #require_once 'Zend/Validate/Abstract.php';
        return Zend_Validate_Abstract::getDefaultTranslator();
    }

    /**
     * Sets a default translation object for all validation objects
     *
     * @param Zend_Translate|Zend_Translate_Adapter|null $translator
     */
    public static function setDefaultTranslator($translator = null)
    {
        #require_once 'Zend/Validate/Abstract.php';
        Zend_Validate_Abstract::setDefaultTranslator($translator);
    }
}

 

 

 

I am also using CentOS.


I have also run the following commands:

- php -d memory_limit=-1 bin/magento index:reindex

- php bin/magento cache:flush

- php bin/magento cache:clean

- php bin/magento index:reindex

- php bin/magento catalog:images:resize

- php -d memory_limit=-1 bin/magento setup:static-content:deploy el_GR

- php -d memory_limit=-1 bin/magento setup:static-content:deploy

 

I did deploy two times because I have two languages

 

I have also fixed the files & folder permissions exactly as instructed here:

https://devdocs.magento.com/guides/v2.4/install-gde/composer.html

find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} +
find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} +

 

I also removed all temporary files with the following commands:

(before running magento commands)

rm -rf var/log/*
rm -rf pub/static/*
rm -rf var/view_preprocessed

I am using Magento: 2.2.5, I don't know what else to do.

 

 

Highlighted

Re: Problems after Migrating to a New Server/Hosting

@MariosX 

 

just update your website DocumentRoot to the pub folder. 

then flush the cache and check the website. 

 

that's it. 

 

Highlighted

Re: Problems after Migrating to a New Server/Hosting

@amitsamsukha 

I already did that. 

I still have the problems I mentioned

Highlighted

Re: Problems after Migrating to a New Server/Hosting

@MariosX can you confirm the following points?

 

slider and products images are now resolved?

the issue class EmailAddress is there on checkout?

 

please try to update include_path to. 

i.e. just dot "."

 

also, check your PHP version, it should be 7.1 or 7.0.2 / 7.0.4

 

 

Highlighted

Re: Problems after Migrating to a New Server/Hosting

thanks for everything, that dot fixed all of my problems.

now I just have to optimize the website, it's very slow.

 

Highlighted

Re: Problems after Migrating to a New Server/Hosting

kindly Accept as a Solution if that works for you 

also for optimization, you can use the following extension from Amasty it's very helpful 

 

https://amasty.com/google-page-speed-optimizer-for-magento-2.html