{"id":146225,"date":"2018-10-05T14:57:39","date_gmt":"2018-10-05T14:57:39","guid":{"rendered":"https:\/\/webkul.com\/blog\/?p=146225"},"modified":"2024-08-06T06:05:41","modified_gmt":"2024-08-06T06:05:41","slug":"upgrade-magento-2-to-version-2-3","status":"publish","type":"post","link":"https:\/\/webkul.com\/blog\/upgrade-magento-2-to-version-2-3\/","title":{"rendered":"Upgrade Magento 2 to version 2.3.*"},"content":{"rendered":"\n<p>As Magento 2.3 is out, its Beta version is available for installation. Installing the current Magento version to 2.3* is quite simple through CLI.<\/p>\n\n\n\n<p>Magento in its doc provides the script to upgrade Magento to 2.3 but it doesn&#8217;t work out of the box as of now.<\/p>\n\n\n\n<p>You may also streamline your upgrade process by utilizing professional <a href=\"https:\/\/webkul.com\/magento-2-upgrade-services\/\" target=\"_blank\" rel=\"noreferrer noopener\">Magento 2 upgrade services<\/a>.<\/p>\n\n\n\n<p>Please follow all the steps in <a href=\"https:\/\/devdocs.magento.com\/guides\/v2.3\/comp-mgr\/cli\/cli-upgrade.html\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Magento documentation<\/a> to upgrade through CLI, use the following script install.<\/p>\n\n\n\n<p>Initially, PHP errors occurred during the Magento 2.3.0-beta8 installation script, which is designed for stable versions. <\/p>\n\n\n\n<p>After making the required adjustments, the script successfully installed the beta version without issues.<\/p>\n\n\n\n<p>Change pre_composer_update_2.3.php script to:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">#!\/usr\/bin\/php\n&lt;?php\n\/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n *\/\ndeclare(strict_types=1);\n\n$_scriptName = basename(__FILE__);\n\ndefine(\n    &#039;SYNOPSIS&#039;,\n&lt;&lt;&lt;SYNOPSIS\nUpdates Magento with 2.3 requirements that can&#039;t be done by `composer update` or `bin\/magento setup:upgrade`. \nRun this script after upgrading to PHP 7.1\/7.2 and before running `composer update` or `bin\/magento setup:upgrade`.\n\nSteps included:\n - Require new version of the metapackage\n - Update &quot;require-dev&quot; section\n - Add &quot;Zend\\\\Mvc\\\\Controller\\\\&quot;: &quot;setup\/src\/Zend\/Mvc\/Controller\/&quot; to composer.json &quot;autoload&quot;:&quot;psr-4&quot; section\n - Update Magento\/Updater if it&#039;s installed\n - Update name, version, and description fields in the root composer.json \n\nUsage: php -f $_scriptName -- --root=&#039;&lt;\/path\/to\/magento\/root\/&gt;&#039; &#091;--composer=&#039;&lt;\/path\/to\/composer\/executable&gt;&#039;] \n           &#091;--edition=&#039;&lt;community|enterprise&gt;&#039;] &#091;--repo=&#039;&lt;composer_repo_url&gt;&#039;] &#091;--version=&#039;&lt;version_constraint&gt;&#039;]\n           &#091;--help]\n\nRequired:\n --root=&#039;&lt;\/path\/to\/magento\/root\/&gt;&#039;\n    Path to the Magento installation root directory\n\nOptional:\n --composer=&#039;&lt;\/path\/to\/composer\/executable&gt;&#039;\n    Path to the composer executable\n    - Default: The composer found in the system PATH\n    \n --edition=&#039;&lt;community|enterprise&gt;&#039;\n    Target Magento edition for the update.  Open Source = &#039;community&#039;, Commerce = &#039;enterprise&#039;\n    - Default: The edition currently required in composer.json\n    \n --repo=&#039;&lt;composer_repo_url&gt;&#039;\n    The Magento repository url to use to pull the new packages\n    - Default: The Magento repository configured in composer.json\n    \n --version=&#039;&lt;version_constraint&gt;&#039;\n    A composer version constraint for allowable 2.3 packages. Versions other than 2.3 are not handled by this script\n    See https:\/\/getcomposer.org\/doc\/articles\/versions.md#writing-version-constraints for more information.\n    - Default: The latest 2.3 version available in the Magento repository\n\n --help\n    Display this message\nSYNOPSIS\n);\n\n$opts = getopt(&#039;&#039;, &#091;\n    &#039;root:&#039;,\n    &#039;composer:&#039;,\n    &#039;edition:&#039;,\n    &#039;repo:&#039;,\n    &#039;version:&#039;,\n    &#039;help&#039;\n]);\n\n\/\/ Log levels available for use with output() function\ndefine(&#039;INFO&#039;, 0);\ndefine(&#039;WARN&#039;, 1);\ndefine(&#039;ERROR&#039;, 2);\n\nif (isset($opts&#091;&#039;help&#039;])) {\n    output(SYNOPSIS);\n    exit(0);\n}\n\ntry {\n    if (version_compare(PHP_VERSION, &#039;7.1&#039;, &#039;&lt;&#039;) || version_compare(PHP_VERSION, &#039;7.3&#039;, &#039;&gt;=&#039;)) {\n        preg_match(&#039;\/^\\d+\\.\\d+\\.\\d+\/&#039;,PHP_VERSION, $matches);\n        $phpVersion = $matches&#091;0];\n        throw new Exception(&quot;Invalid PHP version &#039;$phpVersion&#039;. Magento 2.3 requires PHP 7.1 or 7.2&quot;);\n    }\n\n    \/**** Populate and Validate Settings ****\/\n\n    if (empty($opts&#091;&#039;root&#039;]) || !is_dir($opts&#091;&#039;root&#039;])) {\n        throw new BadMethodCallException(&#039;Existing Magento root directory must be supplied with --root&#039;);\n    }\n    $rootDir = $opts&#091;&#039;root&#039;];\n\n    $composerFile = &quot;$rootDir\/composer.json&quot;;\n    if (!file_exists($composerFile)) {\n        throw new InvalidArgumentException(&quot;Supplied Magento root directory &#039;$rootDir&#039; does not contain composer.json&quot;);\n    }\n\n    $composerData = json_decode(file_get_contents($composerFile), true);\n\n    $metapackageMatcher = &#039;\/^magento\\\/product\\-(?&lt;edition&gt;community|enterprise)\\-edition$\/&#039;;\n    foreach (array_keys($composerData&#091;&#039;require&#039;]) as $requiredPackage) {\n        if (preg_match($metapackageMatcher, $requiredPackage, $matches)) {\n            $edition = $matches&#091;&#039;edition&#039;];\n            break;\n        }\n    }\n    if (empty($edition)) {\n        throw new InvalidArgumentException(&quot;No Magento metapackage found in $composerFile&quot;);\n    }\n\n    \/\/ Override composer.json edition if one is passed to the script\n    if (!empty($opts&#091;&#039;edition&#039;])) {\n        $edition = $opts&#091;&#039;edition&#039;];\n    }\n    $edition = strtolower($edition);\n\n    if ($edition !== &#039;community&#039; &amp;&amp; $edition !== &#039;enterprise&#039;) {\n        throw new InvalidArgumentException(&quot;Only &#039;community&#039; and &#039;enterprise&#039; editions allowed; &#039;$edition&#039; given&quot;);\n    }\n\n    $composerExec = (!empty($opts&#091;&#039;composer&#039;]) ? $opts&#091;&#039;composer&#039;] : &#039;composer&#039;);\n    if (basename($composerExec, &#039;.phar&#039;) != &#039;composer&#039;) {\n        throw new InvalidArgumentException(&quot;&#039;$composerExec&#039; is not a composer executable&quot;);\n    }\n\n    \/\/ Use &#039;command -v&#039; to check if composer is executable\n    exec(&quot;command -v $composerExec&quot;, $out, $composerFailed);\n    if ($composerFailed) {\n        if ($composerExec == &#039;composer&#039;) {\n            $message = &#039;Composer executable is not available in the system PATH&#039;;\n        }\n        else {\n            $message = &quot;Invalid composer executable &#039;$composerExec&#039;&quot;;\n        }\n        throw new InvalidArgumentException($message);\n    }\n\n    \/\/ The composer command uses the Magento root as the working directory so this script can be run from anywhere\n    $composerExec = &quot;$composerExec --working-dir=&#039;$rootDir&#039;&quot;;\n\n    \/\/ Set the version constraint to any 2.3 package if not specified\n    $constraint = !empty($opts&#091;&#039;version&#039;]) ? $opts&#091;&#039;version&#039;] : &#039;2.3.0-beta8&#039;;\n\n    \/\/ Composer package names\n    $project = &quot;magento\/project-$edition-edition&quot;;\n    $metapackage = &quot;magento\/product-$edition-edition&quot;;\n\n    \/\/ Get the list of potential Magento repositories to search for the update package\n    $mageUrls = &#091;];\n    $authFailed = &#091;];\n    if (!empty($opts&#091;&#039;repo&#039;])) {\n        $mageUrls&#091;] = $opts&#091;&#039;repo&#039;];\n    }\n    else {\n        print_r($composerData&#091;&#039;repositories&#039;]);\n        foreach ($composerData&#091;&#039;repositories&#039;] as $label =&gt; $repo) {\n            output($label); output(strpos($repo&#091;&#039;url&#039;], &#039;.mage&#039;));\n            if (strpos(strtolower((string)$label), &#039;mage&#039;) !== false || strpos($repo&#091;&#039;url&#039;], &#039;.mage&#039;) !== false) {\n                $mageUrls&#091;] = $repo&#091;&#039;url&#039;];\n            }\n        }\n\n        if (count($mageUrls) == 0) {\n            throw new InvalidArgumentException(&#039;No Magento repository urls found in composer.json&#039;);\n        }\n    }\n\n    $tempDir = findUnusedFilename($rootDir, &#039;temp_project&#039;);\n    $projectConstraint = &quot;$project=&#039;$constraint&#039;&quot;;\n    $version = null;\n    $description = null;\n\n    output(&quot;**** Searching for a matching version of $project ****&quot;);\n\n    \/\/ Try to retrieve a 2.3 package from each Magento repository until one is found\n    foreach ($mageUrls as $repoUrl) {\n        try {\n            output(&quot;\\\\nChecking $repoUrl&quot;);\n            deleteFilepath($tempDir);\n            output(&quot;create-project --repository=$repoUrl $projectConstraint $tempDir --no-install&quot;);\n            runComposer(&quot;create-project --repository=$repoUrl $projectConstraint $tempDir --no-install&quot;);\n\n            \/\/ Make sure the downloaded package is 2.3\n            $newComposer = json_decode(file_get_contents(&quot;$tempDir\/composer.json&quot;), true);\n            $version = $newComposer&#091;&#039;version&#039;];\n            $description = $newComposer&#091;&#039;description&#039;];\n\n            if (strpos($version, &#039;2.3.&#039;) !== 0) {\n                throw new InvalidArgumentException(&quot;Bad 2.3 version constraint &#039;$constraint&#039;; version $version found&quot;);\n            }\n\n            \/\/ If no errors occurred, set this as the correct repo, forget errors from previous repos, and move forward\n            output(&quot;\\\\n**** Found compatible $project version: $version ****&quot;);\n            $repo = $repoUrl;\n            unset($exception);\n            break;\n        }\n        catch (Exception $e) {\n            \/\/ If this repository doesn&#039;t have a valid package, save the error but continue checking any others\n            output(&quot;Failed to find a valid 2.3 $project package on $repoUrl&quot;, WARN);\n            $exception = $e;\n        }\n    }\n\n    \/\/ If a valid project package hasn&#039;t been found, throw the last error\n    if (isset($exception)) {\n        throw $exception;\n    }\n\n    output(&quot;\\\\n**** Executing Updates ****&quot;);\n\n    $composerBackup = findUnusedFilename($rootDir, &#039;composer.json.bak&#039;);\n    output(&quot;\\\\nBacking up $composerFile to $composerBackup&quot;);\n    copy($composerFile, $composerBackup);\n\n    \/\/ Add the repository to composer.json if needed without overwriting any existing ones\n    $repoUrls = array_map(function ($r) { return $r&#091;&#039;url&#039;]; }, $composerData&#091;&#039;repositories&#039;]);\n    if (!in_array($repo, $repoUrls)) {\n        $repoLabels = array_map(&#039;strtolower&#039;,array_keys($composerData&#091;&#039;repositories&#039;]));\n        $newLabel = &#039;magento&#039;;\n        if (in_array($newLabel, $repoLabels)) {\n            $count = count($repoLabels);\n            for ($i = 1; $i &lt;= $count; $i++) {\n                if (!in_array(&quot;$newLabel-$i&quot;, $repoLabels)) {\n                    $newLabel = &quot;$newLabel-$i&quot;;\n                    break;\n                }\n            }\n        }\n        output(&quot;\\\\nAdding $repo to composer repositories under label &#039;$newLabel&#039;&quot;);\n        runComposer(&quot;config repositories.$newLabel composer $repo&quot;);\n    }\n\n    output(&quot;\\\\nUpdating Magento metapackage requirement to $metapackage=$version&quot;);\n    if ($edition == &#039;enterprise&#039;) {\n        \/\/ Community -&gt; Enterprise upgrades need to remove the community edition metapackage\n        runComposer(&#039;remove magento\/product-community-edition --no-update&#039;);\n        output(&#039;&#039;);\n    }\n    runComposer(&quot;require $metapackage=$version --no-update&quot;);\n\n    output(&#039;\\nUpdating &quot;require-dev&quot; section of composer.json&#039;);\n    runComposer(&#039;require --dev &#039; .\n        &#039;phpunit\/phpunit:~6.2.0 &#039; .\n        &#039;friendsofphp\/php-cs-fixer:~2.10.1 &#039; .\n        &#039;lusitanian\/oauth:~0.8.10 &#039; .\n        &#039;pdepend\/pdepend:2.5.2 &#039; .\n        &#039;sebastian\/phpcpd:~3.0.0 &#039; .\n        &#039;squizlabs\/php_codesniffer:3.2.2 --no-update&#039;);\n    output(&#039;&#039;);\n    runComposer(&#039;remove --dev sjparkinson\/static-review fabpot\/php-cs-fixer --no-update&#039;);\n\n    output(&#039;\\nAdding &quot;Zend\\\\\\\\Mvc\\\\\\\\Controller\\\\\\\\&quot;: &quot;setup\/src\/Zend\/Mvc\/Controller\/&quot; to &quot;autoload&quot;: &quot;psr-4&quot;&#039;);\n    $composerData&#091;&#039;autoload&#039;]&#091;&#039;psr-4&#039;]&#091;&#039;Zend\\\\Mvc\\\\Controller\\\\&#039;] = &#039;setup\/src\/Zend\/Mvc\/Controller\/&#039;;\n\n    if (preg_match(&#039;\/^magento\\\/project\\-(community|enterprise)\\-edition$\/&#039;, $composerData&#091;&#039;name&#039;])) {\n        output(&#039;\\nUpdating project name, version, and description&#039;);\n        $composerData&#091;&#039;name&#039;] = $project;\n        $composerData&#091;&#039;version&#039;] = $version;\n        $composerData&#091;&#039;description&#039;] = $description;\n    }\n\n    file_put_contents($composerFile, json_encode($composerData, JSON_UNESCAPED_SLASHES|JSON_PRETTY_PRINT));\n\n    \/\/ Update Magento\/Updater if it&#039;s installed\n    $updateDir = &quot;$rootDir\/update&quot;;\n    if (file_exists($updateDir)) {\n        $updateBackup = findUnusedFilename($rootDir, &#039;update.bak&#039;);\n        output(&quot;\\\\nBacking up Magento\/Updater directory $updateDir to $updateBackup&quot;);\n        rename($updateDir, $updateBackup);\n        output(&#039;\\nUpdating Magento\/Updater&#039;);\n        rename(&quot;$tempDir\/update&quot;, $updateDir);\n    }\n\n    \/\/ Remove temp project directory that was used for repo\/version validation and new source for Magento\/Updater\n    deleteFilepath($tempDir);\n\n    output(&quot;\\\\n**** Script Complete! $composerFile updated to Magento version $version ****&quot;);\n    if (count($authFailed) &gt; 0) {\n        output(&#039;Repository authentication failures occurred!&#039;, WARN);\n        output(&#039; * Failed authentication could result in incorrect package versions&#039;, WARN);\n        output(&#039; * To resolve, add credentials for the repositories to auth.json&#039;, WARN);\n        output(&#039; * URL(s) failing authentication: &#039; . join(&#039;, &#039;, array_keys($authFailed)), WARN);\n    }\n} catch (Exception $e) {\n    if ($e-&gt;getPrevious()) {\n        $e = $e-&gt;getPrevious();\n    }\n\n    try {\n        output($e-&gt;getMessage(), ERROR, get_class($e));\n        output(&#039;Script failed! See usage information with --help&#039;, ERROR);\n\n        if (isset($composerBackup) &amp;&amp; file_exists($composerBackup)) {\n            output(&quot;Resetting $composerFile backup&quot;);\n            deleteFilepath($composerFile);\n            rename($composerBackup, $composerFile);\n        }\n        if (isset($updateBackup) &amp;&amp; file_exists($updateBackup)) {\n            output(&quot;Resetting $updateDir backup&quot;);\n            deleteFilepath($updateDir);\n            rename($updateBackup, $updateDir);\n        }\n        if (isset($tempDir) &amp;&amp; file_exists($tempDir)) {\n            output(&#039;Removing temporary project directory&#039;);\n            deleteFilepath($tempDir);\n        }\n    }\n    catch (Exception $e2) {\n        output($e2-&gt;getMessage(), ERROR, get_class($e2));\n        output(&#039;Backup restoration or directory cleanup failed&#039;, ERROR);\n    }\n\n    exit($e-&gt;getCode() == 0 ? 1 : $e-&gt;getCode());\n}\n\n\/**\n * Gets a variant of a filename that doesn&#039;t already exist so we don&#039;t overwrite anything\n *\n * @param string $dir\n * @param string $filename\n * @return string\n *\/\nfunction findUnusedFilename($dir, $filename) {\n    $unique = &quot;$dir\/$filename&quot;;\n    if (file_exists($unique)) {\n        $unique = tempnam($dir, &quot;$filename.&quot;);\n        unlink($unique);\n    }\n    return $unique;\n}\n\n\/**\n * Execute a composer command, reload $composerData afterwards, and check for repo authentication warnings\n *\n * @param string $command\n * @return array Command output split by lines\n * @throws RuntimeException\n *\/\nfunction runComposer($command)\n{\n    global $composerExec, $composerData, $composerFile, $authFailed;\n    $command = &quot;$composerExec $command --no-interaction&quot;;\n    output(&quot; Running command:\\\\n  $command&quot;);\n    exec(&quot;$command 2&gt;&amp;1&quot;, $lines, $exitCode);\n    $output = &#039;    &#039; . join(&#039;\\n    &#039;, $lines);\n\n    \/\/ Reload composer object from the updated composer.json\n    $composerData = json_decode(file_get_contents($composerFile), true);\n\n    if (0 !== $exitCode) {\n        $output = &quot;Error encountered running command:\\\\n $command\\\\n$output&quot;;\n        throw new RuntimeException($output, $exitCode);\n    }\n    output($output);\n\n    if (strpos($output, &#039;URL required authentication.&#039;) !== false) {\n        preg_match(&quot;\/&#039;(https?:\\\/\\\/)?(?&lt;url&gt;&#091;^\\\/&#039;]+)(\\\/&#091;^&#039;]*)?&#039; URL required authentication\/&quot;, $output, $matches);\n        $authUrl = $matches&#091;&#039;url&#039;];\n        $authFailed&#091;$authUrl] = 1;\n        output(&quot;Repository authentication failed; make sure &#039;$authUrl&#039; exists in auth.json&quot;, WARN);\n    }\n\n    return $lines;\n}\n\n\/**\n * Deletes a file or a directory and all its contents\n *\n * @param string $path\n * @throws Exception\n *\/\nfunction deleteFilepath($path) {\n    if (!file_exists($path)) {\n        return;\n    }\n    if (is_dir($path)) {\n        $files = array_diff(scandir($path), array(&#039;..&#039;, &#039;.&#039;));\n        foreach ($files as $file) {\n            deleteFilepath(&quot;$path\/$file&quot;);\n        }\n        rmdir($path);\n    }\n    else {\n        unlink($path);\n    }\n    if (file_exists($path)) {\n        throw new Exception(&quot;Failed to delete $path&quot;);\n    }\n}\n\n\/**\n * Logs the given text with \\n newline replacement and log level formatting\n *\n * @param string $string Text to log\n * @param int $level One of INFO, WARN, or ERROR\n * @param string $label Optional message label; defaults to WARNING for $level = WARN and ERROR for $level = ERROR\n *\/\nfunction output($string, $level = INFO, $label = &#039;&#039;) {\n    $string = str_replace(&#039;\\n&#039;, PHP_EOL, $string);\n\n    if (!empty($label)) {\n        $label = &quot;$label: &quot;;\n    }\n    else if ($level == WARN) {\n        $label = &#039;WARNING: &#039;;\n    }\n    else if ($level == ERROR) {\n        $label = &#039;ERROR: &#039;;\n    }\n    $string = &quot;$label$string&quot;;\n\n    if ($level == WARN) {\n        error_log($string);\n    }\n    elseif ($level == ERROR) {\n        error_log(PHP_EOL . $string);\n    }\n    else {\n        echo $string . PHP_EOL;\n    }\n}<\/pre>\n\n\n\n<p>In the script, please make sure the Magento Beta version is entered directly, as it was not found. <br><br>Also, update the <strong>composer.json<\/strong> file to install the Beta version, as the minimum stability was previously set to stable.<br><br>My composer file in Magento root directory:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">{\n    &quot;name&quot;: &quot;magento\/project-community-edition&quot;,\n    &quot;description&quot;: &quot;eCommerce Platform for Growth (Community Edition)&quot;,\n    &quot;type&quot;: &quot;project&quot;,\n    &quot;version&quot;: &quot;2.3.0-beta8&quot;,\n    &quot;license&quot;: &#091;\n        &quot;OSL-3.0&quot;,\n        &quot;AFL-3.0&quot;\n    ],\n    &quot;require&quot;: {\n        &quot;magento\/product-community-edition&quot;: &quot;2.3.0-beta8&quot;,\n        &quot;composer\/composer&quot;: &quot;@alpha&quot;\n    },\n    &quot;require-dev&quot;: {\n        &quot;phpunit\/phpunit&quot;: &quot;~6.2.0&quot;,\n        &quot;squizlabs\/php_codesniffer&quot;: &quot;3.2.2&quot;,\n        &quot;phpmd\/phpmd&quot;: &quot;@stable&quot;,\n        &quot;pdepend\/pdepend&quot;: &quot;2.5.2&quot;,\n        &quot;friendsofphp\/php-cs-fixer&quot;: &quot;~2.10.1&quot;,\n        &quot;lusitanian\/oauth&quot;: &quot;~0.8.10&quot;,\n        &quot;sebastian\/phpcpd&quot;: &quot;~3.0.0&quot;\n    },\n    &quot;autoload&quot;: {\n        &quot;psr-4&quot;: {\n            &quot;Magento\\\\Framework\\\\&quot;: &quot;lib\/internal\/Magento\/Framework\/&quot;,\n            &quot;Magento\\\\Setup\\\\&quot;: &quot;setup\/src\/Magento\/Setup\/&quot;,\n            &quot;Magento\\\\&quot;: &quot;app\/code\/Magento\/&quot;,\n            &quot;Zend\\\\Mvc\\\\Controller\\\\&quot;: &quot;setup\/src\/Zend\/Mvc\/Controller\/&quot;\n        },\n        &quot;psr-0&quot;: {\n            &quot;&quot;: &#091;\n                &quot;app\/code\/&quot;,\n                &quot;generated\/code\/&quot;\n            ]\n        },\n        &quot;files&quot;: &#091;\n            &quot;app\/etc\/NonComposerComponentRegistration.php&quot;\n        ],\n        &quot;exclude-from-classmap&quot;: &#091;\n            &quot;**\/dev\/**&quot;,\n            &quot;**\/update\/**&quot;,\n            &quot;**\/Test\/**&quot;\n        ]\n    },\n    &quot;autoload-dev&quot;: {\n        &quot;psr-4&quot;: {\n            &quot;Magento\\\\Sniffs\\\\&quot;: &quot;dev\/tests\/static\/framework\/Magento\/Sniffs\/&quot;,\n            &quot;Magento\\\\Tools\\\\&quot;: &quot;dev\/tools\/Magento\/Tools\/&quot;,\n            &quot;Magento\\\\Tools\\\\Sanity\\\\&quot;: &quot;dev\/build\/publication\/sanity\/Magento\/Tools\/Sanity\/&quot;,\n            &quot;Magento\\\\TestFramework\\\\Inspection\\\\&quot;: &quot;dev\/tests\/static\/framework\/Magento\/TestFramework\/Inspection\/&quot;,\n            &quot;Magento\\\\TestFramework\\\\Utility\\\\&quot;: &quot;dev\/tests\/static\/framework\/Magento\/TestFramework\/Utility\/&quot;\n        }\n    },\n    &quot;minimum-stability&quot;: &quot;beta&quot;,\n    &quot;repositories&quot;: &#091;\n        {\n            &quot;type&quot;: &quot;composer&quot;,\n            &quot;url&quot;: &quot;https:\/\/repo.magento.com\/&quot;\n        }\n    ],\n    &quot;extra&quot;: {\n        &quot;magento-force&quot;: &quot;override&quot;\n    }\n}<\/pre>\n\n\n\n<p>That&#8217;s all for this post. If you get any error during installation share with us in the comments below, will be happy to help you.<\/p>\n\n\n\n<p>You can also explore more about&nbsp;<a href=\"https:\/\/webkul.com\/magento-2-upgrade-services\/\" target=\"_blank\" rel=\"noreferrer noopener\" data-wpel-link=\"internal\">Magento 2 Upgrade Services<\/a>&nbsp;to update your e-commerce website with the latest Magento version or migrate from another e-commerce platform.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As Magento 2.3 is out, its Beta version is available for installation. Installing the current Magento version to 2.3* is quite simple through CLI. Magento in its doc provides the script to upgrade Magento to 2.3 but it doesn&#8217;t work out of the box as of now. You may also streamline your upgrade process by <a href=\"https:\/\/webkul.com\/blog\/upgrade-magento-2-to-version-2-3\/\">[&#8230;]<\/a><\/p>\n","protected":false},"author":116,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[302],"tags":[7630,7629,7628],"class_list":["post-146225","post","type-post","status-publish","format-standard","hentry","category-magento2","tag-magento-2-3-install","tag-magento2-3","tag-upgarde"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Upgrade Magento 2 to version 2.3.* - Webkul Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/webkul.com\/blog\/upgrade-magento-2-to-version-2-3\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Upgrade Magento 2 to version 2.3.* - Webkul Blog\" \/>\n<meta property=\"og:description\" content=\"As Magento 2.3 is out, its Beta version is available for installation. Installing the current Magento version to 2.3* is quite simple through CLI. Magento in its doc provides the script to upgrade Magento to 2.3 but it doesn&#8217;t work out of the box as of now. You may also streamline your upgrade process by [...]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/webkul.com\/blog\/upgrade-magento-2-to-version-2-3\/\" \/>\n<meta property=\"og:site_name\" content=\"Webkul Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/webkul\/\" \/>\n<meta property=\"article:published_time\" content=\"2018-10-05T14:57:39+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-08-06T06:05:41+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-og.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Ayaz Mittaqi\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@webkul\" \/>\n<meta name=\"twitter:site\" content=\"@webkul\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ayaz Mittaqi\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/webkul.com\/blog\/upgrade-magento-2-to-version-2-3\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/webkul.com\/blog\/upgrade-magento-2-to-version-2-3\/\"},\"author\":{\"name\":\"Ayaz Mittaqi\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/person\/3a9d84d349b963ed99f7aead9372dd6d\"},\"headline\":\"Upgrade Magento 2 to version 2.3.*\",\"datePublished\":\"2018-10-05T14:57:39+00:00\",\"dateModified\":\"2024-08-06T06:05:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/webkul.com\/blog\/upgrade-magento-2-to-version-2-3\/\"},\"wordCount\":212,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/webkul.com\/blog\/#organization\"},\"keywords\":[\"magento 2.3 install\",\"magento2.3\",\"upgarde\"],\"articleSection\":[\"Magento2\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/webkul.com\/blog\/upgrade-magento-2-to-version-2-3\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/webkul.com\/blog\/upgrade-magento-2-to-version-2-3\/\",\"url\":\"https:\/\/webkul.com\/blog\/upgrade-magento-2-to-version-2-3\/\",\"name\":\"Upgrade Magento 2 to version 2.3.* - Webkul Blog\",\"isPartOf\":{\"@id\":\"https:\/\/webkul.com\/blog\/#website\"},\"datePublished\":\"2018-10-05T14:57:39+00:00\",\"dateModified\":\"2024-08-06T06:05:41+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/webkul.com\/blog\/upgrade-magento-2-to-version-2-3\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/webkul.com\/blog\/upgrade-magento-2-to-version-2-3\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/webkul.com\/blog\/upgrade-magento-2-to-version-2-3\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/webkul.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Upgrade Magento 2 to version 2.3.*\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/webkul.com\/blog\/#website\",\"url\":\"https:\/\/webkul.com\/blog\/\",\"name\":\"Webkul Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/webkul.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/webkul.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/webkul.com\/blog\/#organization\",\"name\":\"WebKul Software Private Limited\",\"url\":\"https:\/\/webkul.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png\",\"contentUrl\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png\",\"width\":380,\"height\":380,\"caption\":\"WebKul Software Private Limited\"},\"image\":{\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/webkul\/\",\"https:\/\/x.com\/webkul\",\"https:\/\/www.instagram.com\/webkul\/\",\"https:\/\/www.linkedin.com\/company\/webkul\",\"https:\/\/www.youtube.com\/user\/webkul\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/person\/3a9d84d349b963ed99f7aead9372dd6d\",\"name\":\"Ayaz Mittaqi\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/9a683a7c995567db93858f0305606f73f9075f82330789701e3ed345f6f830aa?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/9a683a7c995567db93858f0305606f73f9075f82330789701e3ed345f6f830aa?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g\",\"caption\":\"Ayaz Mittaqi\"},\"url\":\"https:\/\/webkul.com\/blog\/author\/ayaz-mittaqi024\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Upgrade Magento 2 to version 2.3.* - Webkul Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/webkul.com\/blog\/upgrade-magento-2-to-version-2-3\/","og_locale":"en_US","og_type":"article","og_title":"Upgrade Magento 2 to version 2.3.* - Webkul Blog","og_description":"As Magento 2.3 is out, its Beta version is available for installation. Installing the current Magento version to 2.3* is quite simple through CLI. Magento in its doc provides the script to upgrade Magento to 2.3 but it doesn&#8217;t work out of the box as of now. You may also streamline your upgrade process by [...]","og_url":"https:\/\/webkul.com\/blog\/upgrade-magento-2-to-version-2-3\/","og_site_name":"Webkul Blog","article_publisher":"https:\/\/www.facebook.com\/webkul\/","article_published_time":"2018-10-05T14:57:39+00:00","article_modified_time":"2024-08-06T06:05:41+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-og.png","type":"image\/png"}],"author":"Ayaz Mittaqi","twitter_card":"summary_large_image","twitter_creator":"@webkul","twitter_site":"@webkul","twitter_misc":{"Written by":"Ayaz Mittaqi","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/webkul.com\/blog\/upgrade-magento-2-to-version-2-3\/#article","isPartOf":{"@id":"https:\/\/webkul.com\/blog\/upgrade-magento-2-to-version-2-3\/"},"author":{"name":"Ayaz Mittaqi","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/3a9d84d349b963ed99f7aead9372dd6d"},"headline":"Upgrade Magento 2 to version 2.3.*","datePublished":"2018-10-05T14:57:39+00:00","dateModified":"2024-08-06T06:05:41+00:00","mainEntityOfPage":{"@id":"https:\/\/webkul.com\/blog\/upgrade-magento-2-to-version-2-3\/"},"wordCount":212,"commentCount":0,"publisher":{"@id":"https:\/\/webkul.com\/blog\/#organization"},"keywords":["magento 2.3 install","magento2.3","upgarde"],"articleSection":["Magento2"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/webkul.com\/blog\/upgrade-magento-2-to-version-2-3\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/webkul.com\/blog\/upgrade-magento-2-to-version-2-3\/","url":"https:\/\/webkul.com\/blog\/upgrade-magento-2-to-version-2-3\/","name":"Upgrade Magento 2 to version 2.3.* - Webkul Blog","isPartOf":{"@id":"https:\/\/webkul.com\/blog\/#website"},"datePublished":"2018-10-05T14:57:39+00:00","dateModified":"2024-08-06T06:05:41+00:00","breadcrumb":{"@id":"https:\/\/webkul.com\/blog\/upgrade-magento-2-to-version-2-3\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/webkul.com\/blog\/upgrade-magento-2-to-version-2-3\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/webkul.com\/blog\/upgrade-magento-2-to-version-2-3\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/webkul.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Upgrade Magento 2 to version 2.3.*"}]},{"@type":"WebSite","@id":"https:\/\/webkul.com\/blog\/#website","url":"https:\/\/webkul.com\/blog\/","name":"Webkul Blog","description":"","publisher":{"@id":"https:\/\/webkul.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/webkul.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/webkul.com\/blog\/#organization","name":"WebKul Software Private Limited","url":"https:\/\/webkul.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png","contentUrl":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png","width":380,"height":380,"caption":"WebKul Software Private Limited"},"image":{"@id":"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/webkul\/","https:\/\/x.com\/webkul","https:\/\/www.instagram.com\/webkul\/","https:\/\/www.linkedin.com\/company\/webkul","https:\/\/www.youtube.com\/user\/webkul\/"]},{"@type":"Person","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/3a9d84d349b963ed99f7aead9372dd6d","name":"Ayaz Mittaqi","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/9a683a7c995567db93858f0305606f73f9075f82330789701e3ed345f6f830aa?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9a683a7c995567db93858f0305606f73f9075f82330789701e3ed345f6f830aa?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g","caption":"Ayaz Mittaqi"},"url":"https:\/\/webkul.com\/blog\/author\/ayaz-mittaqi024\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/146225","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/users\/116"}],"replies":[{"embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/comments?post=146225"}],"version-history":[{"count":16,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/146225\/revisions"}],"predecessor-version":[{"id":456433,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/146225\/revisions\/456433"}],"wp:attachment":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/media?parent=146225"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/categories?post=146225"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/tags?post=146225"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}