どのようにエラー Magentoのを解決することができます1.php7でxx?[重複]
-
29-09-2020 - |
質問
Magentoの1.9.4は、PHP7で実行されていない、それは以下のようにエラーを示しています:
Fatal error: Uncaught Error: Function name must be a string in
app\code\core\Mage\Core\Model\Layout.php:555 Stack trace: #0
app\code\core\Mage\Core\Controller\Varien\Action.php(390): Mage_Core_Model_Layout->getOutput() #1
app\code\core\Mage\Cms\Helper\Page.php(137): Mage_Core_Controller_Varien_Action->renderLayout() #2
app\code\core\Mage\Cms\Helper\Page.php(52): Mage_Cms_Helper_Page->_renderPage(Object(Mage_Cms_IndexController), 'home') #3
app\code\core\Mage\Cms\controllers\IndexController.php(45): Mage_Cms_Helper_Page->renderPage(Object(Mage_Cms_IndexController), 'home') #4
app\code\core\Mage\Core\Controller\Varien\Action.php(418): Mage_Cms_IndexController->indexAction() #5
app\code\core\Mage\Core\Controller\Varien\Router\Standard.php(254): Mage_Core_Controller_Varien_Action->dispatch('index') #6
app\code\core\Mage\Core\Model\Layout.php on line 555
解決
それは起こるので PHP 7
あなたが呼び出すつもりであることを明確にする必要があります $callback
メソッド(関数)としての変数。したがって、コードの元の行は次のようになります(ファイル app/code/core/Mage/Core/Model/Layout.php
):
$out .= $this->getBlock($callback[0])->$callback[1]();
最新のPHPバージョンで動作させるには、このコードをこのコードに置き換える必要があります:
$out .= $this->getBlock($callback[0])->{$callback[1]}();
参照 このブログ 詳細については。
他のヒント
PHP7でMagento 1.xのWebサイトを実行したい場合は、いくつかのMagento 1.xファイルにいくつかの小さな調整を行い、問題なく動作させる必要があります。
Magento CodeのほとんどはPHP 7でも有効ですが、以下にリストされている非互換性があります。
1。均一な変数構文の問題:
1.1アプリ/コード/コア/ MAGE / CORE / MODEL / LAYOUT.PHP:555
このファイルはマゼントをクラッシュする原因と致命的なエラーです。ファイルを上書きします
を交換してください$out .= $this->getBlock($callback[0])->$callback[1]();
.
$out .= $this->getBlock($callback[0])->{$callback[1]}();
.
1.2 App \ Code \ Core \ Mage \ ImportExport \ Model \ Import \ Uploader.php:135
このファイルはMagento CSVインポーターをエフェクトします。ファイルをオーバーライドしてから、_validateFile()関数を上書きして線135を置き換えます。
を交換してください$params['object']->$params['method']($filePath);
.
$params['object']->{$params['method']}($filePath);
.
1.3 App \ Code \ Core \ Mage \ ImportExport \ Model \ Export \ Entity \ Product \ Type \ Abstrat.php:99
マゼントのこの発行効果エクスポート機能。 Magentoは上記の抽象クラスから3つのクラスを拡張するので、下のクラスの内側のエラーの根本的な原因は上記のクラスの行#99です。
mage_importexport_model_export_entity_product_type_configurableable MAGE_IMPORTEXPORT_MODEL_EXPORT_ENTITY_PRODUCT_TYPE_GROUPED MAGE_IMPORTEXPORT_MODEL_EXPORT_ENTITY_PRODUCT_TYPE_SIMPLE
ローカルコードプールで3つのクラスを上書きし、OverrideAttribute()関数を上書きし、行#99
を置き換える必要があります。$data['filter_options'] = $this->$data['options_method']();
.
$data['filter_options'] = $this->{$data['options_method']}();
.
1.4 App \ Code \ Core \ Mage \ ImportExport \ Model \ Export \ Entity \ Customer.php:250
このファイルエフェクトは顧客の機能を輸出します。上記のファイルをオーバーライドし、下のように行#250を変更します。
$data['filter_options'] = $this->$data['options_method']();
.
$data['filter_options'] = $this->{$data['options_method']}();
.
1.5 lib \ varien \ file \ uploader.php:259
ファイルのアップロードは機能しません。 Magentoは上記のクラスからMAGE_CORE_MODEL_FILE_UPLOADを拡張し、このクラスをオーバーライドして_validateFile()関数を書き換える必要があります。
$params['object']->$params['method']($this->_file['tmp_name']);
.
$params['object']->{$params['method']}($this->_file['tmp_name']);
.
2。型鋳造問題
2.1 App \ Code \ Core \ Mage \ Core \ Model \ Resource \ Session.Php:218
MagentoセッションはPHP 7では機能しませんので、ユーザーログインが機能しません。 読み取り($ SESSID)関数は文字列を返すので、以下のように戻り変数をtypecast
return $data;
.
return (string)$data;
.
誤った合計は、小計、割引、輸送などの並び順に誤ったものです。 拡張子を作成し、拡張子のconfig.xmlにコードを下回ることでソート順を訂正してください。
<global>
<sales>
<quote>
<totals>
<msrp>
<before>grand_total</before>
</msrp>
<shipping>
<after>subtotal,freeshipping,tax_subtotal,msrp</after>
</shipping>
</totals>
</quote>
</sales>
</global>
.
これは私が上に投稿したものへの元の参照です: > http://'scriptbaker.com/tag/magento---9/
コードでクエリが見つからない場合は、Magentoによってカバーされ、前に言ったように、ほとんどのコードは有効であるため、無視できるように有効です。私はすべてがあなたの質問に答えることができると私は信じています。