2009-08-18 5 views
4

Ich muss meinen Server auf PHP 5.3 aktualisieren, habe aber eine Magento-Installation und ich weiß, dass Magento nicht gut mit PHP 5.3 funktioniert.Welche Änderungen muss ich machen, damit Magento mit PHP 5.3 funktioniert?

Ich denke, dass die Änderungen nicht zu umfangreich sein werden (von dem, was ich gelesen habe). Aber ich dachte, ich würde es für die SO-Crowd öffnen.

Hat jemand das erfolgreich gemacht? Wenn ja, hast du gute Notizen gemacht?

Antwort

1

versucht 2 Zeilen Code aber dann ist kein Upgrade sicher .... ein Produktionsserver sollte sowieso nie die neueste Version ausführen, ich würde niemals auf einem Produktionsserver upgraden ... Beta oder Test sicher. __toString -> __invozieren und einen Split -> explodieren

+1

nicht ganz sicher, warum dies eine negative bekommen ... das sind die Funktionen erforderlich, um den Sprung zu machen. der andere ist nur ein vernünftiger Ratschlag für eine Prod-Umgebung, aber was auch immer, ich nehme an, dass Egos manchmal dem Wissen im Weg stehen können. – Matt

-1

Ich würde Magento nicht mit 5.3 modifizieren, da die Änderungen definitiv komplexer sein werden, als Ihre Quelle annimmt. PHP 5.3 kommt mit Namespaces und der Autoloading-Mechanismus wird sich sicher ändern. Dies bedeutet, dass sich viele Dinge intern ändern werden. Lange Klassen-Namen wie:

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

nur als Auftrag in seinem eigenen Namensraum statt aufgerufen werden:

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

// es hängt davon ab, wie Magento Team Namespaces wird implementieren

0

Nun, wenn Sie entscheiden sich trotzdem, Magento mit PHP 5.3 zu starten, hier ist wie es geht (getestet mit Version 1.3.2.3):

1: in index.php, um Linie 35, ersetzen

error_reporting(E_ALL | E_STRICT); 

mit

error_reporting((E_ALL | E_STRICT) & !E_DEPRECATED) 

(Grund: Magento verwendet häufig die Split-Funktion, die in PHP 5.3 veraltet ist)

2: in /lib/Varien/Object.php, um die Linie 484 ändern

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

zu

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

(Grund: Ich weiß wirklich nicht, aber es funktioniert)

0

Re nic28 Lösung: Auf einer 1.3.3.0 Magento-Installation, die ich brauche auch das __toString zu tun Änderung in app/code __invoke/Kern/Mage/Katalog/Model/Layer/Filter/Price.php, Zeile 139:

$key=.=taxReq->__toString(array(), '_'); 
-1

ich habe diese Situation auf meinem blog bedeckt. Es erklärt tatsächlich, wie man die Inkompatibilitäten zwischen Magento 1.3.X und PHP 5.3.X löst. Ich hoffe, es hilft.

5

Um Magento 1.3 zu betreiben.x auf PHP 5.3, müssen Sie die folgende Funktion aus den entsprechenden Dateien ersetzen:

1> index.php

error_reporting(E_ALL | E_STRICT); 

zu

error_reporting(E_ALL & E_STRICT & ~E_DEPRECATED); 


2> lib/Varien/Objekt .php

__toString 

zu

__invoke 


3> lib/Varien/pear.php

error_reporting(E_ALL & ~E_NOTICE); 

zu

error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED); 


4> Downloader/Maged/pear.php

error_reporting(E_ALL & ~E_NOTICE); 

zu

error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED); 


5> app \ code \ core \ Mage \ Catalog \ Modell \ Schicht \ Filter \ Price.php

__toString 

zu

__invoke 


6> App \ Code \ Kern \ Mage \ Core \ Controller \ Anforderung \ Http.php

split 

zu

explode 


7> app \ code \ core \ Mage \ Catalog \ Modell \ Kategorie \ Attribut \ Backend \ Sortby.php

split 

zu

explode 


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

split 

zu

explode 

Für Terminal-Benutzer, die gerade Patch anwenden möchten, würde ich empfehlen, den folgenden Artikel zu verwenden: http://goivvy.com/blog/magento1.3fix/

Sie können aus folgenden Magento erhalten mehr Informationen Blog:
http://www.blog.magepsycho.com/how-to-run-magento-1-3-x-on-php-5-3/

Hoffe, das hilft.

0

Ich habe eine lange Liste von Dateien gefunden, die die Funktion split verwenden. Es muss durch Explosion ersetzt werden. Eine einfache Änderung des Funktionsnamens reicht aus. Diese Liste ergänzt das, was MagePsycho oben gepostet hat. Der Downloader-Ordner kann mehrere weitere Dateien enthalten, die Suche, die ich verwendet habe, befindet sich in der ersten Zeile.

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']); 
Verwandte Themen