Magento – PHP Fatal error: Cannot redeclare __() (previously declared in /vendor/magento/framework/Phrase/__.php:15) in /app/functions.php on line 23

fatal errormagento-upgrademagento2.2.3magento2.2.6

Hello I am facing the issue after upgrade from 2.2.6 to 2.3.0
Can you suggest what is needed to be modified?

  1. file __.php :
<?php

declare(strict_types=1);

function __()
{
  $argc = func_get_args();



$text = array_shift($argc);
if (!empty($argc) && is_array($argc[0])) {
    $argc = $argc[0];
}

return new \Magento\Framework\Phrase($text, $argc);
}

2.file – functions.php:

$text = array_shift($argc);
if (!empty($argc) && is_array($argc[0])) {
    $argc = $argc[0];
}

return new \Magento\Framework\Phrase($text, $argc);
}

Best Answer

This is original content of app/functions.php file:

<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */

/**
 * Create value-object \Magento\Framework\Phrase
 * @deprecated The global function __() is now loaded via Magento Framework, the below require is only
 *             for backwards compatibility reasons and this file will be removed in a future version
 * @see        Magento\Framework\Phrase\__.php
 * @SuppressWarnings(PHPMD.ShortMethodName)
 * @return \Magento\Framework\Phrase
 */
if (!function_exists('__')) {
    function __()
    {
        $argc = func_get_args();

        $text = array_shift($argc);
        if (!empty($argc) && is_array($argc[0])) {
            $argc = $argc[0];
        }

        return new \Magento\Framework\Phrase($text, $argc);
    }
}

If your file has different content, please change it to the above one

Related Topic