4

サーバーをPHP5.3にアップグレードする必要がありますが、Magentoをインストールしていて、MagentoがPHP5.3でうまく機能しないことを知っています。

(私が読んだものから)変更はそれほど広範囲ではないと思います。しかし、私はそれをSOの群衆に開放すると思いました。

誰かがこれを成功させましたか?もしそうなら、あなたは良いメモを取りましたか?

4

8 に答える 8

5

PHP5.3でMagento1.3.xを実行するには、対応するファイルから次の関数を置き換える必要があります。

1> index.php

error_reporting(E_ALL | E_STRICT);

 error_reporting(E_ALL & E_STRICT & ~E_DEPRECATED);


2> lib / Varien / Object.php

__toString 

 __invoke


3> lib / Varien / Pear.php

error_reporting(E_ALL & ~E_NOTICE);

error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);


4>ダウンローダー/Maged/Pear.php

error_reporting(E_ALL & ~E_NOTICE);

error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);


5> app \ code \ core \ Mage \ Catalog \ Model \ Layer \ Filter \ Price.php

__toString

__invoke


6> app \ code \ core \ Mage \ Core \ Controller \ Request \ Http.php

split

explode


7> app \ code \ core \ Mage \ Catalog \ Model \ Category \ Attribute \ Backend \ Sortby.php

split

explode


8> app \ code \ core \ Mage \ Admin \ Model \ User.php

split

explode

パッチを適用したいだけのターミナルユーザーには、次の記事を使用することをお勧めします:http: //goivvy.com/blog/magento1.3fix/

次のMagentoブログから詳細情報を入手できます:
http ://www.blog.magepsycho.com/how-to-run-magento-1-3-x-on-php-5-3/

お役に立てれば。

于 2012-03-07T10:17:46.890 に答える
1

互換性を確保する過程にあるようです。

http://www.magentocommerce.com/boards/viewthread/54158/

もし私があなたなら、PHP5.3へのアップグレードを試みる前に公式リリースを待つでしょう

于 2009-08-18T20:36:53.907 に答える
1

2行のコードですが、アップグレードは安全ではありません....本番サーバーはとにかく最新リリースを実行するべきではありません。本番サーバーでアップグレードすることは決してありません...ベータ版またはテストしてください。__toString->__呼び出しと分割->爆発

于 2010-02-20T08:09:57.180 に答える
0

とにかくPHP5.3でMagentoを実行することにした場合は、次の方法で実行できます(バージョン1.3.2.3でテスト済み)。

1:index.phpの35行目あたりを置き換えます

error_reporting(E_ALL | E_STRICT);

error_reporting((E_ALL | E_STRICT) & !E_DEPRECATED)

(理由:Magentoは、PHP 5.3で非推奨となったsplit関数を使用することがよくあります)

2:/lib/Varien/Object.phpで、484行目あたりが変更されています

public function ___toString(array $arrAttributes = array(), $valueSeparator=',')

public function __invoke(array $arrAttributes = array(), $valueSeparator=',')

(理由:よくわかりませんが、機能します!)

于 2010-06-06T23:14:12.557 に答える
0

Re nic28のソリューション:1.3.3.0 Magentoのインストールでは、app / code / core / Mage / Catalog / Model / Layer / Filter / Price.phpの139行目で__toStringから__invokeへの変更も行う必要がありました:

$key=.=taxReq->__toString(array(), '_');
于 2010-06-22T21:42:17.793 に答える
0

関数splitを使用するファイルの長いリストを見つけました。explodeに置き換える必要があります。関数名を変更するだけで十分です。このリストは、MagePsychoが上記に投稿したものに追加されます。ダウンローダーフォルダーにはさらにいくつかのファイルが含まれている可能性があります。私が使用した検索は最初の行にあります。

Search "\bspliti?\(" (68 hits in 54 files)
E:\magento\shop\app\code\core\Mage\Adminhtml\controllers\System\ConfigController.php (1 hits)
  Line 155:             foreach(split("\n", $e->getMessage()) as $message) {
E:\magento\shop\app\code\core\Mage\Adminhtml\Model\Observer.php (1 hits)
  Line 63:             $value = is_array($request->getPost($key)) ? $request->getPost($key) : split(',', $request->getPost($key));
E:\magento\shop\app\code\core\Mage\Adminhtml\Model\System\Config\Backend\Currency\Abstract.php (2 hits)
  Line 47:             return split(',', Mage::getConfig()->getNode('currency/options/allow', $this->getScope(), $this->getScopeId()));
  Line 59:         return split(',', Mage::getStoreConfig('system/currency/installed'));
E:\magento\shop\app\code\core\Mage\Adminhtml\Model\System\Config\Backend\Locale.php (1 hits)
  Line 49:         $values     = split(',', $this->getValue());
E:\magento\shop\app\code\core\Mage\Bundle\sql\bundle_setup\mysql4-install-0.1.0.php (1 hits)
  Line 162:     $applyTo = split(',', $installer->getAttribute('catalog_product', $field, 'apply_to'));
E:\magento\shop\app\code\core\Mage\Catalog\Model\Category.php (1 hits)
  Line 756:             $available = split(',', $available);
E:\magento\shop\app\code\core\Mage\Catalog\Model\Convert\Adapter\Product.php (2 hits)
  Line 561:             $websiteCodes = split(',', $importData['websites']);
  Line 592:                 $value = split(self::MULTI_DELIMITER, $value);
E:\magento\shop\app\code\core\Mage\Catalog\Model\Resource\Eav\Mysql4\Url.php (2 hits)
  Line 502:             $split = split('/', $category->getPath());
  Line 710:             $product->setCategoryIds(split(',', $product->getCategoryIds()));
E:\magento\shop\app\code\core\Mage\Catalog\sql\catalog_setup\mysql4-upgrade-0.7.39-0.7.40.php (1 hits)
  Line 35:     $applyTo = split(',', $installer->getAttribute('catalog_product', $field, 'apply_to'));
E:\magento\shop\app\code\core\Mage\CatalogRule\Model\Rule\Condition\Product.php (1 hits)
  Line 361:                 $value = split(',', $value);
E:\magento\shop\app\code\core\Mage\CatalogRule\sql\catalogrule_setup\mysql4-upgrade-0.7.1-0.7.2.php (1 hits)
  Line 44:         foreach (split(',', $r['store_ids']) as $storeId) {
E:\magento\shop\app\code\core\Mage\Customer\Model\Convert\Adapter\Customer.php (1 hits)
  Line 500:                 $value = split(self::MULTI_DELIMITER, $value);
E:\magento\shop\app\code\core\Mage\Downloadable\Helper\Download.php (2 hits)
  Line 210:                 $contentType = split('; ', $this->_urlHeaders['content-type']);
  Line 225:                 $contentDisposition = split('; ', $this->_urlHeaders['content-disposition']);
E:\magento\shop\app\code\core\Mage\Downloadable\sql\downloadable_setup\mysql4-install-0.1.0.php (1 hits)
  Line 46:     $applyTo = split(',', $installer->getAttribute('catalog_product', $field, 'apply_to'));
E:\magento\shop\app\code\core\Mage\Downloadable\sql\downloadable_setup\mysql4-upgrade-0.1.0-0.1.1.php (1 hits)
  Line 32: $applyTo = split(',', $installer->getAttribute('catalog_product', 'weight', 'apply_to'));
E:\magento\shop\app\code\core\Mage\Eav\Model\Convert\Adapter\Entity.php (1 hits)
  Line 107:                         $split = split('/', $k);
E:\magento\shop\app\code\core\Mage\Sales\Model\Order\Pdf\Abstract.php (1 hits)
  Line 157:         foreach (split("\|", $address) as $str) {
E:\magento\shop\lib\PEAR\SOAP\Parser.php (1 hits)
  Line 381:                 $this->message[$pos]['arrayOffset'] = split(',', substr($value, 1, strlen($value) - 2));
E:\magento\shop\lib\PEAR\SOAP\Transport\HTTP.php (2 hits)
  Line 272:         $headers = split("\r?\n", $headers);
  Line 278:             list($name, $value) = split(':', $value);
E:\magento\shop\lib\Varien\Db\Adapter\Pdo\Mysql.php (1 hits)
  Line 585:             $keyList[$v[1]] = split(',', str_replace($this->getQuoteIdentifierSymbol(), '', $v[2]));
E:\magento\shop\lib\Zend\Cache\Frontend\Page.php (1 hits)
  Line 316:                 $tmp = split(':', $headerSent);
E:\magento\shop\lib\Zend\Gdata\YouTube\VideoEntry.php (1 hits)
  Line 839:                 return split('(, *)|,', $keywordsString);
E:\magento\shop\lib\Zend\Service\Amazon.php (1 hits)
  Line 202:             $responseGroup = split(',', $options['ResponseGroup']);
于 2012-11-29T11:32:52.923 に答える
-1

5.3で動作するようにMagentoを変更することは気にしないでしょう。変更は、ソースが想定しているよりも間違いなく複雑になるからです。PHP 5.3には名前空間が付属しており、自動読み込みメカニズムは確実に変更されます。これは、多くのものが内部で変更されることを意味します。次のような長いクラス名:

// Mage_Sales_Model_Order
Mage::getModel('sales/order');

次の代わりに、独自の名前空間で順序としてのみ呼び出されます。

// maybe something like this
Mage::getModel('order');
// or like this
$order = new Order();

//Magentoチームが名前空間を実装する方法によって異なります

于 2010-04-01T14:15:04.687 に答える
-1

この状況についてはブログで取り上げました。実際には、Magento1.3.XとPHP5.3.Xの間の非互換性を解決する方法を説明しています。お役に立てば幸いです。

于 2011-05-28T04:40:34.037 に答える