Magento

SQLSTATE[HY000] [2002] No such file or directory (after magento setup:upgrade on Mac OS)

The problem occures, when you trying to upgrade Magento with the terminal (for example on your localhost which is a Mac)

You typed in:

and the result ist:

and/or

The problem is, that php in the Mac-Terminal is running with another php-ini-file than the Apache-Server.

To test that, do the followin:

1.) Find out the path of the php.ini-file that is used by the Mac.
For thattype into the terminal:

2.) Find out the php.ini-file of your localhost Apache-Server
Create a phpinfo-file (phpinfo.php) with the content: <?php phpinfo() ?> . I’m currently using Mamp Pro so for that example the path is:

If the path is NOT the same as the one your Mac is using in the terminal, you now know where the problem is. (Magento is also explaining this issue in this post.)

3.) Create Symlink (symbolic link) from one php.ini-file to the other.
One solution to correct that is, to create a simlink from your Mac-php-ini file to the MAMP Pro – directory, which can be done by the simple command:

 

Magento – Warning: simplexml_load_string() – parser error

If you see this warning, when opening category of your Magento-Shop …

… Of course you could check the XML-Updates in the file:
app/code/core/Mage/Core/Model/Layout/Update.php

The solution

…might be simple.

The reason can be special characters. For example: The &

For that, just exchange the “&”-Sign in your category (title) by the correct HTML-sign “&”

Magento: Default-Werte für System-Konfiguration in eigenem Modul

Hier ein kleiner nützlicher Code, den ihr für das Setzen von Default-Werten von Magento-Konfigurationsvariablen gebrauchen könnt. D.h. wenn in der Datei systems.xml Felder definiert sind, die vorgefertigte Werte haben sollen.

Dies muss in der Datei config.xml definiert werden. Folgend ein Beispiel:

Ganz einfach 😉

Umziehen von einem Magento-Shop auf einen anderen Server

Da ich mir die Informationen aus irgendwelchen Quellen zusammensuchen musste, gebe ich hier eine kurze und knappe Übersicht der Hauptpunkte, die bei einem Umzug von Magento zu einem anderem Server beachtet werden sollten:

1. Kopieren der Dateien
Kopieren aller Dateien auf das gewünschte Verzeichnis des neuen Servers. Das kann man am einfachsten per FTP machen. Z.B. mit FileZilla, wobei man aufpassen sollte, dass wirklich alle Dateien kopiert werden. Bei Filezilla gibt es unten ein Tab, indem die fehlerhaft übertragenen Dateien aufgelistet werden. Diese sollte man anschließend nochmals in die Warteschleife setzen (per Rechtsklick). Außerdem ist es empfehlenswert, bei dem FTP-Programm einzustellen, dass mehrere Dateien gleichzeitig übertragen werden können.
Anschließend läd man den gesamten Ordner auf den neuen Server ins gewünschte Verzeichnis.

Per FTP dauert sowohl das Herunterladen also auch der Upload eine halbe Ewigkeit (mehrere Stunden)!! Also viel Zeit einplanen!

Schneller geht’s natürlich, wenn die Dateien per shell auf dem Server gezippt werden und dann heruntergeladen werden.

2. Magento Datenbank kopieren
Das geht etwas fixer!
– in PHPmyAdmin: die Datenbank anwählen, in der die Magento-Daten gespeichert sind.
– Alle Tabellen die mit “log_” beginnen, können problemlos geleert (nicht gelöscht!) werden. Die log-Tabellen nehmen viel Speicherplatz ein, daher ist ein Export ohne diese Tabellen empfehlenswert. Folgender SQL-Befehl kann verwendet werden:

– In den erweiterten Optionen für den Export: Fremdschlüsselüberprüfung deaktivieren (disable foreign key checks). Ansonsten lässt sich die Datenbank eventuell später nicht mehr richtig importieren.
– Export als Dateiname.sql

Auf den neuem Server am besten auch mit PHPmyAdmin arbeiten, Hier:
– Import der .sql-Datei, also der Tabellen in die gewünschte Datenbank.
Wenn es bei diesem Schritt Probleme gibt, nochmal überprüfen, ob beim Export auch wirklich nur die Tabellen (nicht die komplette Datenbank) exportiert wurde und ob die Fremdschlüsselüberprüfung für den Export deaktiviert worden ist.

3. Datenbankeinstellungen von Magento
– Folgendes File muss angepasst werden: app/etc/local.xml
– Hier muss der Name, Username und PW der neuen Datenbank hin, damit Magento darauf zugreifen kann.

Anmerkung: Falls die alte local.xml – Datei aus irgendwelchen Gründen behalten werden soll, dann bitte auch die Dateiendung ändern, also beispielsweise in “local.xml_0”. Auf keinen Fall in eine andere XML-Datei ändern (z.B. local_alt.xml), da Magento alle XML-Dateien aus dem Verzeichnis liest.

4. Domainadresse für Magento ändern.
Oft kommt es vor, dass man den Shop auf einer Test-Domain zuerst einmal ausprobieren möchte, bevor man den kompletten Umzug vollzieht. Das ist natürlich auch sinnvoll! Ein andere Möglichkeit ist, dass man komplett auf eine andere Domain umziehen möchte.
In diesen beiden Fällen muss man die URL im System von Magento manuell ändern. Normalerweise wird die URL im Admin-Panal in der Konfiguration des Magento-Backends festgelegt, falls wir das aber Manuell machen möchten, so müssen wir wieder mit PHPmyAdmin auf die Datenbank.
Genauer gesagt:
– In der Tabelle: core_config_data
– In Zeile mit path=”web/unsecure/base_url” im Feld “value” die neue (Test-)URL eintragen.
-In Zeile mit path=”web/secure/base_url” ebenfalls im Feld “value” die neue (Test-)URL eintragen.

Fertig!
Nun kann man den Shop unter der neuen URL testen. Sollte alles problemlos funktionieren, so kann man auf der alten URL eine IP-Weiterleitung auf das Verzeichnis des neuen Servers einstellen. Und los geht’s!!!

In Magento ein Attribut im Nachhinein ändern (Einzeiliges Textfeld zu Mehrzeiligen Textfeld ändern)

Wenn man im Magento-Shop-System ein neues Attribut erstellt und im Wert “Katalog Eingabe-Typ für den Shopbetreiber” einzeiliges Textfeld eingibt, so lässt sich dieser Wert im Nachhinein leider nicht mehr verändern.

Dies kann dazu führen, dass man im späteren Betrieb die Feststellung macht, dass die Zeichenlänge bei einem einzeiligen Textfeld, die auf 256 Zeichen beschränkt ist, nicht mehr ausreicht.

Abhilfe verschafft eine relativ einfache Veränderung in der Datenbank, für die ich allerdings etwas suchen musste. Deswegen sei sie hier erklärt:

  1. In der Magento-Datenbank die Tabelle eav_attribute öffnen.
  2. Zeile mit dem richtigen Attribute-Code (Spaltenname ist eav_attribute) aufrufen.
  3. Änderung von den folgenden beiden Einträgen:
    backend_type –> in text (anstatt varchar) ändern.
    frontend_input –> in textarea (anstatt text) ändern.

Das alles lässt sich über die Shell auch sehr einfach mit folgendem mySql-Befehl erledigen:

 

my_attribute_code ist natürlich der Attribute-Code von dem Magento-Attribut, dessen maximale Anzahl von Zeichen im Textfeld verändert sein sollen.