I want to move magento2 to live server but No app/etc/local.xml in my magento 2?
Domanda
I am trying to move my local Magento site to my Live server. (XAMPP to cPanel)
To do this I have exported the database, etc and all those steps are fine.
However i get error on tables in my phpmyadmin on cpanel, also i read that i should edit the local.xml
file but i don't have that file in my app/etc folder rather i have config.php
, env.php
, di(which is xml)file.
Does anybody know if I am doing this step correctly, or is there a different way to get my Magento files from my Local site to my Live site. or how i can manually set local.xml
in magento 2.0
My env.php looks like this
<?php
return array (
'backend' =>
array (
'frontName' => 'admin',
),
'install' =>
array (
'date' => 'Mon, 18 Apr 2016 14:27:37 +0000',
),
'crypt' =>
array (
'key' => '51b8c74ff74f2b568c1025da3b4be0f4',
),
'session' =>
array (
'save' => 'files',
),
'db' =>
array (
'table_prefix' => '',
'connection' =>
array (
'default' =>
array (
'host' => 'localhost',
'dbname' => 'fashmart247',
'username' => 'root',
'password' => '',
'active' => '1',
),
),
),
'resource' =>
array (
'default_setup' =>
array (
'connection' => 'default',
),
),
'x-frame-options' => 'SAMEORIGIN',
'MAGE_MODE' => 'default',
'cache_types' =>
array (
'config' => 1,
'layout' => 1,
'block_html' => 1,
'collections' => 1,
'reflection' => 1,
'db_ddl' => 1,
'eav' => 1,
'config_integration' => 1,
'config_integration_api' => 1,
'full_page' => 1,
'translate' => 1,
'config_webservice' => 1,
),
);
Soluzione
In Magento 2, the equivalent to app/etc/local.xml is app/etc/env.php.
You need to edit that file and everything should be fine.
In case you need an example...
'db' =>
array (
'connection' =>
array (
'indexer' =>
array (
'host' => 'localhost',
'dbname' => '<your_database_name>',
'username' => '<your_database_username>',
'password' => '<your_database_password>',
'active' => '1',
'persistent' => NULL,
),
'default' =>
array (
'host' => 'localhost',
'dbname' => '<your_database_name>',
'username' => '<your_database_username>',
'password' => '<your_database_password>',
'active' => '1',
),
),
'table_prefix' => '',
In case you are a lazy coder just like me...
Create a custom command in Magento 2
app/code/Octopius/Commands/Console/Command/SwitchToLive.php
<?php
namespace Octopius\Commands\Console\Command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
/**
* An Abstract class for support tool related commands.
*/
class SwitchToLiveCommand extends Command
{
protected $_storeManager;
protected $_fileManager;
public function __construct(
\Magento\Store\Model\StoreManagerInterface $storeManager,
\Magento\Framework\Filesystem\Io\File $fileManager
) {
$this->_storeManager = $storeManager;
$this->_dataObjectHelper = $dataObjectHelper;
$this->_fileManager = $fileManager;
parent::__construct();
}
/**
* Define the shell command
* @return void
*/
protected function configure()
{
$this->setName('switch:env:live')
->setDescription('Switch environment file...');
parent::configure();
}
/**
* Execute function
* @param InputInterface $input Input
* @param OutputInterface $output Output
* @throws \Magento\Framework\Exception\LocalizedException
* @return null|int null or 0 if everything went fine, or an error code
*/
protected function execute(InputInterface $input, OutputInterface $output)
{
$output->writeln('Switching to live environment...');
$liveEnv = BP . '/' . 'app/etc/env.php.live';
$env = BP . '/' . 'app/etc/env.php';
if ($this->_fileManager->fileExists($liveEnv)) {
$this->_fileManager->mv($liveEnv, $env);
}
$output->writeln('Environment switched successfully.');
}
}
app/code/Octopius/Commands/etc/di.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="Magento\Framework\Console\CommandList">
<arguments>
<argument name="commands" xsi:type="array">
<item name="octopiusSwitchToLiveCommand" xsi:type="object">Octopius\Commands\Console\Command\SwitchToLiveCommand</item>
</argument>
</arguments>
</type>
</config>
app/code/Octopius/Commands/etc/module.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Module/etc/module.xsd">
<module name="Octopius_Commands" setup_version="0.1.0"/>
</config>
app/code/Octopius/Commands/registration.php
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Octopius_Commands',
__DIR__
);
Obviously, make sure you have app/etc/env.php.live before start using bin/magento switch:env:live
Altri suggerimenti
In magento1 Local.xml has credentials for connection to DB. In magento2 credentials are stored in file env.php. Just edit in this file credentials for DB.