Magento Upgrade - php

I'm looking to upgrade a themed/custom Magento from 1.3.x to Magento 1.9 Enterprise. So far, after multiple attempts at upgrading, I have failed.
After the first upgrade, I uploaded the new Magento in a clean environment, copied the database to a dev database. Using this, the upgrade occurred with two errors: It appears Magento upgrades only support 1.4+ currently, and previous mysql upgrade scripts were not included. After the "install" of the upgrade, I couldn't access wither the admin, or the frontend, and there was no errors to tell me what gives.
Scrapping that idea, I tried a clean install: It worked fine. Then I tried importing all the products from a CSV export. Worked OK, but custom attributes such as images, sizes, etc. didn't transfer over. I have over 900 product, and entering everything manual would be a pain, and unfeasible. Scrapping that idea.
Now I'm at various upgrade configurations, upgrading from Magento 1.3. I'm going to try and upgrade 1.3 to 1.4, and then 1.4 to Enterprise, but has anyone performed such an upgrade successfully before and might be able to provide hints?
Thanks,
Bryon

Byron, I feel your pain. I struggled with an upgrade from 1.3 to 1.4 a month ago.
Try the technique mentioned here: http://www.webshopapps.com/blog/2010/02/upgrading-magento-to-version-1-4-keeping-it-simple/ In the end it worked for me.
The thing that is sort of counter intuitive is the deletion of the database. I kept trying to skip that step, and that's what stymied me for a while. You have to delete the database and reload the data (it does something to the key constraints). In the end I was able to upgrade to 1.4 without manually moving anything.

You should go the route 1.3 to 1.4 , 1.4 to enterprise and switch to default skin while doing so. Skin/templates needs special attention later as the dom is quite different. Merging 1.3 templates to enterprise dom will take ~ 2-4 days experienced slicer who knows how to use diff tools
my usual workflow for this is:
add all three magento versions to git and tag by version , use your own magento installation as base and ignore your template folders and local/community extensions that are not installed by default
on your web directory , checkout your base version
git pull 1.4 to your installation and visit the website to get the upgrades
git pull enterprise to your installation and visit the website to get the upgrades
doing it in such order you also get rid of removed files that magento has removed from each version and you also get all changes and new files.

Magento Enterprise Edition Upgrade Procedure for 1.9 to 1.9.1
Generally all Magento upgrades work by running the updated code with the old database. The differences will be detected and incorporated automatically on the next page request. Magento keeps track of every module's version number for this reason. This is not advised with this upgrade if you have custom code.
Disclaimer – if you have a lot of customization, the upgrade will break the system; it is best to do this on a new (temporary) site, compare, bug fix, then test, then cross browser test.
Your general approach:
Close production server Backup all
DBs and Magento installation Turn
off all your custom extensions and
themes
Delete from HDD: core Magento modules, their layouts, all standard themes and cache.
Get 1.9.1 EE, copy it into a fresh DB installation, then place custom code over the top.
File compare between OTB 1.9.0 and 1.9.1. Pay special attention to a list of core controllers which have been overridden and compare the difference between these controller in version 1.9.0. and 1.9.1.
Here is a list of known problematical issues which will cause rework in our custom code:
1) Google Analytics (does not work in
1.9.0 and to fix it, many changes are required to our custom code)
2) Flat
Category
3) Searching by Attribute –
(xml fix)
4) iFrame problem in CMS
pages
5) Missing admin custom tabs
(compare before and after)
6) Home
page enterprise_home has to be
renamed! (this is an example of a
hidden pitfall undocumented and
represents a warning to you to factor
in time for such problems)
7) Check Mage/Community for new modules which
override modules which we need.
8) Anything which extends the customer
entity should be rigorously tested.
9) JavaScript – be careful - the
actual js templates may be the same,
but the blocks and modules which call
them may have subtle changes!
10) Custom Product Imports – do a test
product import on 1.9.1 using dataflow
method and see
what db fields are needed then add them into the procededural code for your custom code.
Check release notes documentation and update for your theme, whether it supports EE 1.9. Turn it on if it supports, otherwise you'll need another theme.
Check release notes documentation and updates for all your custom extensions - whether they support 1.9.1 Turn them on - one by one.
You will have problems upgrading all core DB data if it's made automatically, check which fields are missing/changed and add them.
Cross Browser testing - problems with your custom theme, and you'll need to check your custom extensions and upgrade their template files, skin css and DB data to fit 1.9.1.
Testing is the biggest task, walk through the application, notice errors and warnings, fix them.

Related

Same composer package in 2 different WordPress plugins

We have developed 2 WordPress plugins which are using same composer package.
Depending on plugin versions the package included in plugin may be changed, we constantly add new functionality to our package.
The problem is that for example plugin A have version 1.0.0 of package, and plugin B have version 1.0.1, WordPress loads only one package , from plugin which loaded first, so if plugin A loaded first then plugin B will use version 1.0.0 package.
We are including autoload.php on both plugins.
Is it possible to do some configuration in WordPress or from composer side to make every plugin load and work with package included on his vendor folder ?
Is it possible to do some configuration in WordPress or from composer side to make every plugin load and work with package included on his vendor folder ?
In general no. The option about namespace rewriting has already been given by Chris Haas, so if you need to rely on different code behind the same global static names, you have to provide a different name for each version.
Another option is you align both plugins to rely on the same dependency version-stability. The example you give with 1.0.0 and 1.0.1 versions, the API should be compatible and it should not be an issue (if the package follows semantic versioning).
From the context of your question, it seems the dependency has not yet matured enough that this is an option practically.
Instead it should be possible to have the plugin which is currently based on 1.0.0 to use 1.0.1 as well. Then the version conflict is solved, as now it is the same version and can use the same names. This may not be an ideal solution, but could get you back to a working version fast and gives you more room to consider a better way in the future (e.g. having a build for those plugins that use scoping).
Additionally you could/should wrap all access to third-party libraries once in your own code so that such problems aren't that deep reaching (dependency issues tend to be harder to resolve). This methodology is independent to Wordpress or Composer, just a recommendation on how to interface to third-party dependencies (or even Wordpress itself[1], which you may know better).
If however what you ask here is already such a wrapper you build your own (e.g. in form of a composer package), consider to adhere to semantic versioning and stabilize its API first.
PHP has no built-in utility to create archives apart from PHAR, e.g. that you can have imports via names but to different code. This is likely also the reason why Composer does not support it and instead provides PSR-0/PSR-4, classmap and file inclusion autoload configuration.
As you have the scenario to share the same namespaces across the plugins - there is no other option actually as it runs in the same PHP process - the first one wins. You may however make your own plugins interoperable so that they can establish a loading order in their own hierarchy, e.g. to prefix the one autoloader before the other conditionally if it exists.
I'd probably go with scoping in the first place and only share build utilities between the plugins nowadays and have a nice package for each plugin afterwards. Yes, scoping can be PITA, but if you have this early on, you don't have to solve this later which is much harder.
Compare for the level of WordPress plugins WordPress Plugin: How do I avoid "tight coupling"? and Multiple Custom Metabox Help - both well dated so it is easier to not take code verbatim but to develop own conclusions.

New version of Wordpress with old DB

First of all I am asking the question here because I did not get an answer in the wordpress forum.
I have a working blog based on wordpress 3.8, which is a pretty old version.
I would like to start everything from scratch and to use the existing DB with all the data (which is very very big, 300+ thousands of tables, it is multisite).
I am afraid to upgrade it because I suspect that the core files were modified in the past (before me).
I would like to install the most recent version of wordpress and make sure everything is compatible and working. What is the best method to do so?
I can install the most recent version and connect it to a clone of the old db instance. Can it break something?
I can install a clean version 3.8 and perform an upgrade. Is it a smart thing to do?
Other methods?
Step 1: backup your database.
Step 2: backup your code base.
Step 3: In a non-production installation, upgrade the WordPress installation. This will trigger a database upgrade as WP needs.
At this point, you have a backup of the old data, you have a versioned copy of the data, and you have a copy of the code that may have been modified, as well as a version that is "current / correct". You are in a position of strength to test functionality, ensure nothing has been lost, etc.
If everything looks good, you could then upgrade the production installation (keeping a copy of backups of both the database and the code base).
Lastly, if I were in your shoes, I would visit the Release Archive and download the specific version you are currently on (3.8.?), then run a comparison between the known good / unaltered files and the files that you have in place. In this way, you can prove whether core files had been altered, and you can see the alterations. This would provide you with the information you might need to re-implement those "features" that were incorrectly implemented in the core code.

What are steps to migrate magento from enterprise edition to community edition?

I'm working on a magento Enterprise edition store and I want to migrate it to Community Edition.
I'm new to magento, please help me with some steps that I can follow to migrate EE to CE.
Could you please provide some ideas?
In my mind there are two different approaches.
You can start fresh with a new community install and bring over your code and design modifications and then your data.
Or you can try to downgrade your installation by "upgrading" to the latest version of community.
The way to go would depend on what modifications or customizations are in place
Not all data can be moved as some of the tables and fields are not in community edition.
Steps suggested:
1. Install fresh magento community version.
2. Copy theme folder from ent site and paste in communiyt site.this will probably break at places and you will have to fill.
3. Magento has data import export system so use that to import products.
4. Similarly apply import export for customer(You might have to go with some 3rd party code for this).
5. Apply configuration via admin.
I am not sure whether you want to move order data too.This part is going to be complex.
See https://magento.stackexchange.com/questions/6706/how-to-migrate-from-enterprise-edition-to-community-edition
Yanted has written a fabulous guide to this - some of the EE features in >= 1.13 actually make upgrades a little more painful than the below writeup would lead you to believe. As Marius points out in the comments that all passwords will have to be reset as encryption methods are handled differently between EE/CE.
See the blog for more details.
http://blog.yanted.com/2014/02/21/downgrading-magento-enterprise-to-community/
Original post:
Migrating is actually very easy - point your CE codebase at your production database. There's little more to it than that (see below for some folder removal information).
If you're using a well-built EE-compatible theme it should be backward compatible.
Here are some little-known EE features you'll need to watch out for when downgrading to Community:
No access to Customer Attributes from Admin Panel
Customer segments will go away
Catalog events, private sales, Invitations etc. will go away
CMS hierarchies are not supported in CE
Banners are not supported in CE
RMA - people always seem to forget about RMA (information will be resident in db)
Admin Logging information will be inaccessible (still resident in db)
If you have a large portion of your CMS built in EE I recommend you take a very thorough and methodical approach and make sure that your new CE theme (or backwardly-compatible EE theme) support the data that is still resident.
I also suggest not dropping any tables from the db prefixed with enterprise - as well as not removing any enterprise folders from your 3rd party themes. These are not considered as part of the EE install and you should take them along with you when you leave. You will need to remove the files and folders from the following locations:
app/code/core/Enterprise
app/design/frontend/enterprise
app/design/adminhtml/default/default/layout/enterprise
app/design/adminhtml/default/default/template/enterprise
skin/adminhtml/default/enterprise
skin/frontend/enterprise
app/etc/modules/Enterprise_*.xml
js/enterprise
LICENSE_EE.txt
LICENSE_EE.html
And of course, you need to consider the real biggie: Full Page Cache. I highly recommend that you find a decent 3rd party Full Page cache.
Best of luck!

Migrating just article content of Joomla 1.0 to 2.5.x / 3.x?

I have a simple website using Joomla 1.0.15, just having articles in some categories. As I want to install or remove components from admin area, I got: "You are not authorised to view this resource" or something like that. This is uncommon, this site is about 5 years old, and never got error message like that.
I think my website is hacked ??
I have set safe_mode = off in php.ini, turn of sh404sef, removing .htaccess file etc ... and it still does not work.
Then i try to upgrade to Joomla 2.5.x / 3.x . I found that i must migrate to Joomla 1.5.x first, then from there to 2.5.x.
I got problem installing "migration.zip" component in my Joomla 1.0.x (always alert/err message pop up is shown).
Is there another way to migrate the website ? May be just get the article section, category, article id and the content of Joomla 1.0.x , then import it to Joomla 2.5.x / 3.x ?
I don't need components, modules, mambots (if any) of the old site. How to do it?
You could definetely go for the manual export/import via some sql if you only care about articles and categories, or for a more "clean" way of doing make a copy of the whole website on your local dev. env. and debug it, make the migration localy and there you go ...
Agree with kriss2 that if all you care about is articles, it's pretty easy to do the sql to change the fields and just put the articles in the uncategorised category that is part of 1.6+. Leave asset_id blank (not 0) You will then need to create assets. You can run a cli for that but also in the user interface copy all articles to a new category.

Upgrading huge number of Joomla sites

Joomla 1.5 will reach the end of its life in a short term and many site are being upgrade to a 1.7 or 2.5 version. We are trying to figure out how we can upgrade our sites. Unfortunately the developers of Joomla, who are doing a great job, haven't kept backwards compatibility high on their requirementslist.
We know there are many resources describing how to migrate a Joomla site to version X from version 1.5. But in our company we have about 120 Joomla sites. With all the migration steps that have to be done to the templates, custom written code and the third party modules we use this would be a hell of a job to migrate. So we are looking into methods and techniques that would make our (upgrade) job easier.
I can't imagine we are the only one with this problem so I am looking for more information on migrating these sites on a large scale. We can't be the only one who are struggling with this.
To give some detail, for upgrading of the minor versions we used the Vendor branches technique which worked awesome. In short, in our SVN repository we have a folder containing the current Joomla release. In the same repository we have a folder containing our own Joomla version with some custom code adjustments. Every project is based on that custom version. With the use of version branching we could easily update all our projects to the latest Joomla version.
For the major upgrade this technique won't be suitable. For instance we expect that some projects won't be upgraded to the new Joomla version for compability issues.
A way to solve this for the 2.5 branch could be to create two new folders with the 2.5 release of Joomla and our own customized 2.5 version. Each migrated project then would be branched of the 2.5 customized version. The migration process would be tedious and for sure be a manual drill.
We are afraid that we have to do this for every major release of Joomla so this won't be a real solution.
A solution we are thinking of is using phar and composer to create the project. If we succesfully can create a joomla phar as library and put custom development in an other phar, upgrading should be as simple as replacing the phar. Third party modules should be put into a phar archive also for easy updating. If modules don't support this, we are going to phar it ourself.
Of course we know that Joomla has a new, integrated update mechanism. We are looking into this mechanism but doubt we can use it since we have some custom patches to core code or module functionality.
To summarize this post, we have two challenges we'd love to get some feedback of.
How would you sggest upgrading 120+ sites to the latest release of Joomla
How do you manage Joomla updates if you have a large number of Joomla sites to maintain
The bad news is that there is no automated upgrade path from Joomla 1.5 to 2.5, as the changes are so drastic that they are almost like night and day. The template changes are such that you may have to rewrite them from scratch. Do not forget that 2.5 does a number of things differently too so you may also face a learning curve.
My suggestion would be to have a tiered migration plan and only migrate the sites that you need to or can justify the costs of the migration as the components, modules and plugins you use.
When doing so you need to watch the release schedule which provides a Long Term Release every 18 months each of which will most probably break backward compatibility from the previous versions, so you will end up with sites at 1.5, 2.5, 3.x etc
I believe that phar can be used in order to distribute a new upgraded version - but it will not help you in the upgrade process itself.
My (painful) experience with a migration from 1.5 to 1.7 taught me that not only the code changes were dramatic but also the DB changes (structure!), ACL implementation etc etc. The template will probably be the least of your problems.
My question back to you is, why do you want to upgrade ALL the websites ? if a specific website needs tools/plugins that are available only on higher versions of Joomla then I guess it's a good enough reason. But to upgrade all the websites will be, like you anticipate, a project from hell...

Categories