解决magento1.9升级使用php7的问题
Fatal error: Uncaught Error: Function name must be a string in
1 2 3 4 5 6 7 8 9 |
<span class="typ">Fatal</span><span class="pln"> error</span><span class="pun">:</span> <span class="typ">Uncaught</span> <span class="typ">Error</span><span class="pun">:</span> <span class="typ">Function</span><span class="pln"> name must be a </span><span class="kwd">string</span> <span class="kwd">in</span><span class="pln"> app\code\core\Mage\Core\Model\Layout</span><span class="pun">.</span><span class="pln">php</span><span class="pun">:</span><span class="lit">555</span> <span class="typ">Stack</span><span class="pln"> trace</span><span class="pun">:</span> <span class="com">#0 </span><span class="pln"> app\code\core\Mage\Core\Controller\Varien\Action</span><span class="pun">.</span><span class="pln">php</span><span class="pun">(</span><span class="lit">390</span><span class="pun">):</span> <span class="typ">Mage_Core_Model_Layout</span><span class="pun">-></span><span class="pln">getOutput</span><span class="pun">()</span> <span class="com">#1 </span><span class="pln"> app\code\core\Mage\Cms\Helper\Page</span><span class="pun">.</span><span class="pln">php</span><span class="pun">(</span><span class="lit">137</span><span class="pun">):</span> <span class="typ">Mage_Core_Controller_Varien_Action</span><span class="pun">-></span><span class="pln">renderLayout</span><span class="pun">()</span> <span class="com">#2 </span><span class="pln"> app\code\core\Mage\Cms\Helper\Page</span><span class="pun">.</span><span class="pln">php</span><span class="pun">(</span><span class="lit">52</span><span class="pun">):</span> <span class="typ">Mage_Cms_Helper_Page</span><span class="pun">-></span><span class="pln">_renderPage</span><span class="pun">(</span><span class="typ">Object</span><span class="pun">(</span><span class="typ">Mage_Cms_IndexController</span><span class="pun">),</span> <span class="str">'home'</span><span class="pun">)</span> <span class="com">#3 </span><span class="pln"> app\code\core\Mage\Cms\controllers\IndexController</span><span class="pun">.</span><span class="pln">php</span><span class="pun">(</span><span class="lit">45</span><span class="pun">):</span> <span class="typ">Mage_Cms_Helper_Page</span><span class="pun">-></span><span class="pln">renderPage</span><span class="pun">(</span><span class="typ">Object</span><span class="pun">(</span><span class="typ">Mage_Cms_IndexController</span><span class="pun">),</span> <span class="str">'home'</span><span class="pun">)</span> <span class="com">#4 </span><span class="pln"> app\code\core\Mage\Core\Controller\Varien\Action</span><span class="pun">.</span><span class="pln">php</span><span class="pun">(</span><span class="lit">418</span><span class="pun">):</span> <span class="typ">Mage_Cms_IndexController</span><span class="pun">-></span><span class="pln">indexAction</span><span class="pun">()</span> <span class="com">#5 </span><span class="pln"> app\code\core\Mage\Core\Controller\Varien\Router\Standard</span><span class="pun">.</span><span class="pln">php</span><span class="pun">(</span><span class="lit">254</span><span class="pun">):</span> <span class="typ">Mage_Core_Controller_Varien_Action</span><span class="pun">-></span><span class="pln">dispatch</span><span class="pun">(</span><span class="str">'index'</span><span class="pun">)</span> <span class="com">#6 </span><span class="pln"> app\code\core\Mage\Core\Model\Layout</span><span class="pun">.</span><span class="pln">php on line </span><span class="lit">555</span> |
如果你magento網站剛從php5.6升到7.0后,或許你會遇到這樣一個錯誤,這是php7給你的見面禮。
发生这种情况是因为在PHP 7
你需要說明你将要调用$callback
变量作为一个方法(函数)。所以,代码的原始行如下所示(文件app/code/core/Mage/Core/Model/Layout.php
):
1 |
<span class="pln">$out </span><span class="pun">.=</span><span class="pln"> $this</span><span class="pun">-></span><span class="pln">getBlock</span><span class="pun">(</span><span class="pln">$callback</span><span class="pun">[</span><span class="lit">0</span><span class="pun">])-></span><span class="pln">$callback</span><span class="pun">[</span><span class="lit">1</span><span class="pun">]();</span> |
为了使它在最新的PHP版本上工作,我们需要用这个代码替换这段代码:
1 |
<span class="pln">$out </span><span class="pun">.=</span><span class="pln"> $this</span><span class="pun">-></span><span class="pln">getBlock</span><span class="pun">(</span><span class="pln">$callback</span><span class="pun">[</span><span class="lit">0</span><span class="pun">])->{</span><span class="pln">$callback</span><span class="pun">[</span><span class="lit">1</span><span class="pun">]}();</span> |

原创文章,作者:calvin chan,如若转载,请注明出处:https://www.calvinyuki.com/68.html