Bug in update_2-0-13.php? In dem Teil ist noch Code drin, der für ältere SPs gedacht ist..... PHP: // 2.0.12.0 - 2.0.12.2 $t_check = mysql_query("SELECT * FROM configuration WHERE `configuration_group_id` = 32 AND `configuration_key` = '_PAYMENT_SKRILL_EMAILID'"); if(mysql_num_rows($t_check) == 0) { $t_query = "DELETE FROM `configuration` WHERE `configuration_group_id` = 32"; $t_success = mysql_query($t_query); if(!$t_success) { $t_gm_updater_errors[] = array('ERROR' => mysql_error(), 'QUERY' => $t_query); } $t_query = "ALTER TABLE `configuration` CHANGE `set_function` `set_function` VARCHAR( 255 ) NULL DEFAULT NULL"; $t_success = mysql_query($t_query); if(!$t_success) { $t_gm_updater_errors[] = array('ERROR' => mysql_error(), 'QUERY' => $t_query); } } $t_found_duplicate = true; while($t_found_duplicate) { $t_sql = "SELECT `image_id` FROM `products_images` GROUP BY `products_id`, `image_nr` HAVING COUNT(*) > 1"; $t_result = mysql_query($t_sql); $t_found_duplicate = mysql_num_rows($t_result); while($t_result_array = mysql_fetch_array($t_result)) { $t_query = "DELETE FROM `products_images` WHERE `image_id` = '" . $t_result_array['image_id'] . "'"; $t_success = mysql_query($t_query); if(!$t_success) { $t_gm_updater_errors[] = array('ERROR' => mysql_error(), 'QUERY' => $t_query); } } } // clean up slider data $t_query = "DELETE FROM slider_image_area WHERE slider_image_id NOT IN (SELECT slider_image_id FROM slider_image)"; $t_success = mysql_query($t_query); if(!$t_success) { $t_gm_updater_errors[] = array('ERROR' => mysql_error(), 'QUERY' => $t_query); } $t_query = "DELETE FROM slider_image_description WHERE slider_image_id NOT IN (SELECT slider_image_id FROM slider_image)"; $t_success = mysql_query($t_query); if(!$t_success) { $t_gm_updater_errors[] = array('ERROR' => mysql_error(), 'QUERY' => $t_query); } $t_slider_image_ids = array(); $t_slider_image_files = array(); $t_slider_image_preview_files = array(); $t_sql = "SELECT * FROM slider_image WHERE slider_set_id NOT IN (SELECT slider_set_id FROM slider_set)"; $t_result = mysql_query($t_sql); $t_slider_data_found = false; while($t_row = mysql_fetch_array($t_result)) { $t_slider_image_ids[] = $t_row['slider_image_id']; $t_slider_image_files[] = $t_row['image_file']; $t_slider_image_preview_files[] = $t_row['image_preview_file']; $t_slider_data_found = true; } foreach($t_slider_image_files AS $t_slider_image_file) { if(file_exists(DIR_FS_CATALOG . "images/slider_images/" . basename($t_slider_image_file))) { @unlink(DIR_FS_CATALOG . "images/slider_images/" . basename($t_slider_image_file)); } } foreach($t_slider_image_preview_files AS $t_slider_image_preview_file) { if(file_exists(DIR_FS_CATALOG . "images/slider_images/thumbnails/" . basename($t_slider_image_preview_file))) { @unlink(DIR_FS_CATALOG . "images/slider_images/thumbnails/" . basename($t_slider_image_preview_file)); } } if($t_slider_data_found) { $t_query = "DELETE FROM slider_image WHERE slider_image_id IN (" . implode( ',', $t_slider_image_ids ) . ")"; $t_success = mysql_query($t_query); if(!$t_success) { $t_gm_updater_errors[] = array('ERROR' => mysql_error(), 'QUERY' => $t_query); } $t_query = "DELETE FROM slider_image_description WHERE slider_image_id IN (" . implode( ',', $t_slider_image_ids ) . ")"; $t_success = mysql_query($t_query); if(!$t_success) { $t_gm_updater_errors[] = array('ERROR' => mysql_error(), 'QUERY' => $t_query); } $t_query = "DELETE FROM slider_image_area WHERE slider_image_id IN (" . implode( ',', $t_slider_image_ids ) . ")"; $t_success = mysql_query($t_query); if(!$t_success) { $t_gm_updater_errors[] = array('ERROR' => mysql_error(), 'QUERY' => $t_query); } } // 2.0.13.0 $t_get_columns = mysql_query("DESCRIBE `admin_access` 'gm_statusbar'"); if(mysql_num_rows($t_get_columns) == 1) { $t_query = "ALTER TABLE `admin_access` DROP `gm_statusbar`"; $t_success = mysql_query($t_query); if(!$t_success) { $t_gm_updater_errors[] = array('ERROR' => mysql_error(), 'QUERY' => $t_query); } } $t_get_columns = mysql_query("DESCRIBE `admin_access` 'gm_trusted_info'"); if(mysql_num_rows($t_get_columns) == 1) { $t_query = "ALTER TABLE `admin_access` DROP `gm_trusted_info`"; $t_success = mysql_query($t_query); if(!$t_success) { $t_gm_updater_errors[] = array('ERROR' => mysql_error(), 'QUERY' => $t_query); } } $t_get_columns = mysql_query("DESCRIBE `categories_description` 'gm_statusbar'"); if(mysql_num_rows($t_get_columns) == 1) { $t_query = "ALTER TABLE `categories_description` DROP `gm_statusbar`"; $t_success = mysql_query($t_query); if(!$t_success) { $t_gm_updater_errors[] = array('ERROR' => mysql_error(), 'QUERY' => $t_query); } } $t_get_columns = mysql_query("DESCRIBE `categories_description` 'gm_statusbar'"); if(mysql_num_rows($t_get_columns) == 1) { $t_query = "ALTER TABLE `categories_description` DROP `gm_statusbar`"; $t_success = mysql_query($t_query); if(!$t_success) { $t_gm_updater_errors[] = array('ERROR' => mysql_error(), 'QUERY' => $t_query); } } $t_get_columns = mysql_query("DESCRIBE `products_description` 'gm_statusbar'"); if(mysql_num_rows($t_get_columns) == 1) { $t_query = "ALTER TABLE `products_description` DROP `gm_statusbar`"; $t_success = mysql_query($t_query); if(!$t_success) { $t_gm_updater_errors[] = array('ERROR' => mysql_error(), 'QUERY' => $t_query); } } $t_get_columns = @mysql_query("SHOW INDEX FROM `orders` WHERE Key_name = 'date_purchased'"); if(@mysql_num_rows($t_get_columns) == 0) { $t_query = "ALTER TABLE `orders` ADD INDEX ( `date_purchased` )"; @mysql_query($t_query); } $t_get_columns = @mysql_query("SHOW INDEX FROM `products_vpe` WHERE Key_name = 'PRIMARY'"); if(@mysql_num_rows($t_get_columns) == 0) { $t_query = "ALTER TABLE `products_vpe` ADD PRIMARY KEY (`products_vpe_id`, `language_id`)"; @mysql_query($t_query); } $t_get_download_order_status = mysql_query("SELECT configuration_value FROM configuration WHERE configuration_key = 'DOWNLOAD_MIN_ORDERS_STATUS' AND configuration_value != '' AND set_function = 'gm_cfg_get_orders_status('"); if(mysql_num_rows($t_get_download_order_status) == 1) { $t_download_order_status_array = mysql_fetch_array($t_get_download_order_status); $t_download_order_status = $t_download_order_status_array['configuration_value']; if(is_numeric($t_download_order_status)) { $t_download_order_status_id = (int)$t_download_order_status; $t_download_order_status_array = array(); $t_order_status = mysql_query("SELECT orders_status_id FROM orders_status WHERE orders_status_id >= '" . $t_download_order_status_id . "' AND orders_status_id != 99 GROUP BY orders_status_id ORDER BY orders_status_id"); while($t_order_status_array = mysql_fetch_array($t_order_status)) { $t_download_order_status_array[] = $t_order_status_array['orders_status_id']; } if(!empty($t_download_order_status_array)) { $t_query = "UPDATE configuration SET configuration_value = '" . implode('|', $t_download_order_status_array) . "' WHERE configuration_key = 'DOWNLOAD_MIN_ORDERS_STATUS'"; $t_success = mysql_query($t_query); if(!$t_success) { $t_gm_updater_errors[] = array('ERROR' => mysql_error(), 'QUERY' => $t_query); } } } }
Aber das teil ist doch für alles ab gedacht. muss das dann nicht drinnen sein was du da oben anmerkst?
Schöner ist deine Variante, falsch ist unsere aber nicht, wenn ich mich jetzt nicht komplett vertue. Ich sehe keinen Grund für die Klammern.
Hallo! Ich bin neu hier und habe auch wenig Erfahrung mit Gambio GX2 bis jetzt. Ich unterstütze einen Modellflieger-Kumpel mit seinem Modellbau-Shop. Wir hatten vorher einen OpenSource-Shop, der mehrfach von Hackern angegriffen wurde. Wegen dieser Schwierigkeiten sind wir, in der Hoffnung, dass dieser besser gepflegt wird, nun auf Gambio GX2 umgestiegen. Die Installation und Konfiguration konnte ich relativ leicht bewerkstelligen und den Shop so übergeben, dass mein Kumpel mit der Artikel- und Kunden- und Auftragsverwaltung selbst zurecht kommt. Aber nun kommt die Reihe wieder an mich, was das Update betrifft. Ich habe mir das Service Pack 2.0.13.2 runter geladen und mehrfach durchgelesen, was da zu tun ist. Aber alleine anhand der vielen zu löschenden und neu zu installierenden Dateien, wage ich fast nicht an den Shop hand an zu legen. In der Beschreibung steht Schwierigkeitsgrad: leicht .... dann will ich nicht wissen, was schwer bedeutet. Daher habe ich mir den kpl. Shop mit Datenbank runter geladen und wollte ihn auf meinem Linux-Rechner offline zum Laufen bringen, wie ich es mit all meinen Webseiten mache. Dort hätte ich dann testweise das Update durchgespielt, und dann, bei Erfolg auf dem echten Shop im Internet gemacht. Aber bis jetzt ist es mir nicht mal gelungen, die vier config-Dateien so anzupassen, dass der Shop auf meinem Rechner läuft. Solche Probleme hatte ich noch nie. Nun habe ich diesen Thread durchgelesen. Scheinbar ist das Service Pack nicht so fehlerfrei, zumal es inzwischen Service Pack 2.0.13.3 gibt. Dann ist die Rede davon, dass man ggf. das Service Pack erst installieren soll, wenn ein neues raus kommt. Also irgendwie bin ich kpl. verunsichert. Soll ich/man nun 2.0.13.3 oder 2.0.13.2 installieren oder beide nacheinander? Es wird zwar von Gambio ein Installations-Service angeboten, aber mal ehrlich, wer gibt freiwillig Zugangsdaten und Passwörter zum Shop raus, damit ein 'Fremder' darauf Zugriff erhält? Gruß Michael P.
Hallo Michael & willkommen im Club! Zu dieser Anmerkung wird hoffentlich GM-Daniel das Passende antworten. Nur so viel: Wie viele andere Kollegen auch (samt meinereiner!) wirst Du irgendwann zur Problemlösung um ein "Ticket" nicht herumkommen. Und zur Schadensbekäpfung durch den Hersteller sind nun mal logischerweise diese Zugangsdaten erforderlich. Und bedenke: Sollte auch nur ein Fall von Datenmissbrauch durch Gambio bekannt werden (und es würde bekannt), müssten sich ca. 33 Mitarbeiter in Bremen ziemlich schnell nach einem neuen Arbeitsplatz umsehen! Also: Nix gegen ein gesundes Misstrauen und der Zurückhaltung der ShopZugangsDaten - aber im Fall Gambio GmbH darf man sich entspannt zurücklehnen.
Theoretisch gar nix! Aber es sollen ja auch viele Dateien gelöscht werden. Und wenn beim Hochladen oder Löschen ein einziger Fehler passiert, ist der Shop dahin. Ich bin kein php-programmierer, der ggf. problemlos die Ursache analysieren und den Fehler korrigieren könnte. Dann sollen bei einigen Dateien ja noch Voll-Zugriffsrechte (777) gesetzt werden, womit ich nach den mehrfachen Hackerattacken auch ein größeres Problem habe. Ich habe definitiv keine Paranoia. Aber sehr schlechte Erfahrungen und schon viele Stunden und Tage mit sichern und wieder herstellen verbracht. Ich mache das mit dem Shop aus Gefälligkeit und habe neben meinem eigentlichen Beruf nicht die Zeit mehrfach ein und den selben Shop immer wieder neu auf zu bauen. Der Shop ist aktuell noch recht jungfräulich und nicht großartig designed/personalisiert. Aber z.B. die manuelle Übertragung der knapp 1000 Artikel mit all ihren Daten hat viele Tage an Arbeit meines Kumpels und mir verschlungen. Gruß Michael P.
daher macht man das ja dann in einem testshop, aber wer ne liste abarbeitet beim löschen (was nur das aufräumen nicht mehr verwendeter dateien ist und daher die sicherheit ist das diese nicht für hacker zugänglich bleiben) nicht 1zu1 abarbeiten kann. sollte es machen lassen. sorry für die offenen worte. aber das kann ein Kind schon. und das überschreiben nicht manuell veränderter dateien geht auch in paar sekunden. wer ne dokumentation hat welche dateien er von hand angepasst hat wird auch wissen welche dateien er dann noch mal anpassen muss. ansonsten hilft dabei auch winmerge. dennoch ist es einfach dateien hochzuladen und dateien zu löschen. schwerer wäre es wenn du in z.b 10-15 dateien code von hand einfügen müsstest nur mal so als beispiel. daher ist die installation einfach. den jeder kann die liste 1zu1 abarbeiten.
Mit dem MySQLDumper kannst Du diese Daten (und den Rest der Datenbank) voll automatisch Sichern Und bei bedarf ist das zurückspielen in 5 - 10 Min. erledigt. Den Testshop habe ich im web neben meinem Shop. So habe ich die selben Programmversionen (z.B. PHP) etc. und kann Fehler die damit zusammenhängen könnten auch ausschließen.
Du brauchst nur 2 Config Dateien anpassen, die mit .org im Namen sind nur Backups. Wie Barbara schon schreibt, würde ich auch eher einen Testshop online empfehlen. Wenns unbedingt offline sein muss, hier mal ein Auszug aus meiner admin/includes/configure.php unter XAMPP für eine etwas ältere Shopversion: PHP: // Define the webserver and path parameters// * DIR_FS_* = Filesystem directories (local/physical)// * DIR_WS_* = Webserver directories (virtual/URL) define('HTTP_SERVER', 'http://localhost'); // eg, http://localhost or - https://localhost should not be empty for productive servers define('HTTP_CATALOG_SERVER', 'http://localhost'); define('HTTPS_CATALOG_SERVER', 'https://localhost'); define('ENABLE_SSL_CATALOG', 'false'); // secure webserver for catalog module define('DIR_FS_DOCUMENT_ROOT', 'C:/xampp/htdocs/gxstyle2010g/'); // where the pages are located on the server define('DIR_WS_ADMIN', '/gxstyle2010g/admin/'); // absolute path required define('DIR_FS_ADMIN', 'C:/xampp/htdocs/gxstyle2010g/admin/'); // absolute pate required define('DIR_WS_CATALOG', '/gxstyle2010g/'); // absolute path required define('DIR_FS_CATALOG', 'C:/xampp/htdocs/gxstyle2010g/'); // absolute path required define('DIR_WS_IMAGES', 'images/'); define('DIR_FS_CATALOG_IMAGES', DIR_FS_CATALOG . 'images/'); define('DIR_FS_CATALOG_ORIGINAL_IMAGES', DIR_FS_CATALOG_IMAGES .'product_images/original_images/'); define('DIR_FS_CATALOG_THUMBNAIL_IMAGES', DIR_FS_CATALOG_IMAGES .'product_images/thumbnail_images/'); define('DIR_FS_CATALOG_INFO_IMAGES', DIR_FS_CATALOG_IMAGES .'product_images/info_images/'); define('DIR_FS_CATALOG_POPUP_IMAGES', DIR_FS_CATALOG_IMAGES .'product_images/popup_images/'); define('DIR_WS_ICONS', DIR_WS_IMAGES . 'icons/'); define('DIR_WS_CATALOG_IMAGES', DIR_WS_CATALOG . 'images/'); define('DIR_WS_CATALOG_ORIGINAL_IMAGES', DIR_WS_CATALOG_IMAGES .'product_images/original_images/'); define('DIR_WS_CATALOG_THUMBNAIL_IMAGES', DIR_WS_CATALOG_IMAGES .'product_images/thumbnail_images/'); define('DIR_WS_CATALOG_INFO_IMAGES', DIR_WS_CATALOG_IMAGES .'product_images/info_images/'); define('DIR_WS_CATALOG_POPUP_IMAGES', DIR_WS_CATALOG_IMAGES .'product_images/popup_images/'); define('DIR_WS_INCLUDES', 'includes/'); define('DIR_WS_BOXES', DIR_WS_INCLUDES . 'boxes/'); define('DIR_WS_FUNCTIONS', DIR_WS_INCLUDES . 'functions/'); define('DIR_WS_CLASSES', DIR_WS_INCLUDES . 'classes/'); define('DIR_WS_MODULES', DIR_WS_INCLUDES . 'modules/'); define('DIR_WS_LANGUAGES', DIR_WS_CATALOG. 'lang/'); define('DIR_FS_LANGUAGES', DIR_FS_CATALOG. 'lang/'); define('DIR_FS_CATALOG_MODULES', DIR_FS_CATALOG . 'includes/modules/'); define('DIR_FS_BACKUP', DIR_FS_ADMIN . 'backups/'); define('DIR_FS_INC', DIR_FS_CATALOG . 'inc/'); define('DIR_WS_FILEMANAGER', DIR_WS_MODULES . 'fckeditor/editor/filemanager/browser/default/');// define our database connection define('DB_SERVER', 'localhost'); // eg, localhost - should not be empty for productive servers define('DB_SERVER_USERNAME', 'blubb'); define('DB_SERVER_PASSWORD', 'blubb'); define('DB_DATABASE', 'gxstyle2010g'); define('USE_PCONNECT', 'false'); // use persisstent connections? define('STORE_SESSIONS', ''); // leave empty '' for default handler or set to 'mysql'?>
Hi! Wie ich oben schon schrieb, arbeite ich unter Linux. Der Shop, den ich mir aus dem Internet runtergeladen habe, befindet sich bei mir unter /var/www/shop_neu/ Das kommt ja einem 'Shop-Umzug' gleich. Für einen Shopumzug müssen meines Wissens vier Dateien angepasst werden: /var/www/shop_neu/includes/configure.php /var/www/shop_neu/includes/configure.org.php /var/www/shop_neu/admin/includes/configure.php /var/www/shop_neu/admin/includes/configure.org.php Das habe ich auch versucht. Wenn ich nun im Browser den Shop mit 127.0.0.1/shop_neu aufrufe, kommt im Browser eine reinweiße Fläche ohne jede Meldung oder Reaktion. Sollte ich den Shop auf meinem Rechner zum Laufen bekommen, würde ich natürlich versuchen das Update selbst einzuspielen und bei Erfolg dies dann im 'echten' Shop im Internet zu machen. Bleiben noch folgende Fragen noch offen: Müssen nun wirklich nur die beiden .org-Dateien angepasst werden, oder doch alle vier? Wie müssten die Änderungen korrekt aussehen? Welches Update? Service Pack 2.0.13.2 und dann 2.0.13.3 oder nur 2.0.13.3?
Ja sicher! Wenn man ein und den selben Shop hat, aber nicht wenn man auf einen anderen Shop, bzw ein anderes Shopsystem wechselt. Wir hatten vorher osCommerce und sind nun auf Gambio GX2 gewechselt. Der Aufbau der Datenbank ist so unterschiedlich, dass man nicht einfach die Datenbank sichern und wieder einspielen kann. Ein Bekannter, von mir versuchte eine SQL-Abfrage zu kreieren, die die wichtigsten Daten aus dem alten Shop holt und für den neuen vorbereitet. Der Erfolg war aber sehr zweifelhaft und hätte immer noch jede Menge händische Nacharbeit benötigt. Also mussten wir alles manuell kpl. neu eingeben.
Im Portal unter Downloads kannste den gx2_importer downloaden, damit bekommst du alle relevanten Daten aus deinem OS-System rüber!
Ja, es ist wie ein Serverumzug und deshalb müssen auch die configure - Dateien angepasst werden. die Dateien mit dem Zusatz .org sind Sicherungen, die müssen nicht geändert werden. Eventuell ist noch ein falscher Pfad in der Datenbank unter configuration. Nach dem Ändern die Cache leeren. Wenn Du die Version 2.0.12. hast kannst Du gleich das SP 2.0.13.3 nehmen.
Hallo Michael, grundsätzlich kann ich dein Misstrauen verstehen, wenn es um die Herausgabe von Zugangsdaten geht. Man sollte sich immer ganz genau überlegen wem man welche Daten gibt. In diesem Fall gibt es zwei Möglichkeiten: 1. Du erledigst die Installation selbst. Nur Mut, das ist agr nicht so schwer. Mache vorher eine komplettes Backup und dann kann eigentlich nichts passieren. 2. Du lässt die Installation durch uns oder einen anderen Dienstleister durchführen. Dann wirst Du allerdings nicht drum herum kommen, die Zugansgdaten herauszugeben. Kleiner Tipp dazu: Lege einfach einen neuen Zugang an, dann kannst Du ziemlich genau protokollieren wer was damit tut. Außerdem kannst Du nach Abshcluss der Arbeiten denj Zugang einfach wieder sperren.
Hallo, Barbara! Danke, für die Info. Hab nun nochmal probiert, die configs anzupassen, dass der Shop offline auf meinem Rechner läuft. Nun erhalte ich folgende Fehlermeldung: Code: Fatal error: Class 'TemplateControl' not found in /var/www/shop_neu/system/core/MainFactory.inc.php(211) : eval()'d code on line 1 Ich habe in den beiden configs die ersten Zeilen angepasst und unten bei der Datenbank User und Passwort meines SQL-Servers. Der Datenbankname ist identisch mit dem der Datenbank im Internet. Hier die ersten Zeilen meiner Configs: Code: includes/configure.php: define('HTTP_SERVER', 'http://localhost'); // eg, http://localhost - should not be empty for productive servers define('HTTPS_SERVER', 'https://localhost'); // eg, https://localhost - should not be empty for productive servers define('ENABLE_SSL', false); // secure webserver for checkout procedure? define('DIR_WS_CATALOG', '/'); // absolute path required define('DIR_FS_DOCUMENT_ROOT', '/var/www/shop_neu/'); define('DIR_FS_CATALOG', '/var/www/shop_neu/'); .... admin/includes/configure.php define('HTTP_SERVER', 'http://localhost'); // eg, http://localhost or - https://localhost should not be empty for productive servers define('HTTP_CATALOG_SERVER', 'http://localhost'); define('HTTPS_CATALOG_SERVER', 'https://localhost'); define('ENABLE_SSL_CATALOG', 'false'); // secure webserver for catalog module define('DIR_FS_DOCUMENT_ROOT', '/var/www/shop_neu/'); // where the pages are located on the server define('DIR_WS_ADMIN', '/admin/'); // absolute path required define('DIR_FS_ADMIN', '/var/www/shop_neu/admin/'); // absolute pate required define('DIR_WS_CATALOG', '/'); // absolute path required define('DIR_FS_CATALOG', '/var/www/shop_neu/'); // absolute path required ... An den configure.org.php habe ich nun nichts geändert. In der Datenbank habe ich unter configuration nichts gefunden, was ins Internet zeigt.
wenn es onine auf nem server ist nicht localhost sondern die (Link nur für registrierte Nutzer sichtbar.). eintragen.