Upgrade to Ubuntu 16.04 and bringing Magento 2 back to life

I upgraded from Ubuntu 14.04 to Ubuntu 16.04 lately. This brings the joy of PHP 7.0.4 and Apache 2.4. As I run Magento 2 locally for testing purposes, I found it did not work anymore after the upgrade.

Actually I had 3 problems:

1.) Missing PHP extensions

I decided to start a new Magento 2.0.5 setup to check the requirements. From there I found out that I was missing some PHP extensions, so I installed them:

sudo apt-get install php-curl
sudo apt-get install php-intl
sudo apt-get install php-mbstring
sudo apt-get install php-zip

2.) MySQL

After reloading the Magento 2 front page, I got a strange SQL error on the fronted (sorry, I did not copy the error message). I found out that also MySQL workbench did not like to connect to my local MySQL server („[ERROR] Native table ‚performance_schema‘.’session_variables‘ has the wrong structure“ and some more). Somehow it seemed that also MySQL was not running, so I started and restarted MySQL and everything was fine again. Hm.

3.) Enable Apache 2.4 rewrites

The homepage came back on screen, but I was not able to open the admin login page or any other pages. I thought this would have been caused by a missing mod_rewrite, but this was in place.

Somehow I ended up on the devdocs where a solution for the Apache 2.4 rewrites was in place:

Just add the following piece to your 000-default.conf file:

sudo nano /etc/apache2/sites-available/000-default.conf
<Directory "/var/www/>
 AllowOverride All
</Directory>

Hope this helps anyone running into the same problems.

Oh, and btw: Make sure you run at least Magento 2.0.1 for PHP7 fun :)

Weiterlesen

The perfect Magento 2 setup for development

Please note: This article is work in progress!

 

I had the pleasure to attend MageUnconference again this year (thanks to Modulwerft – Simon Sprankel for the ticket btw!). As usual for an Unconference, we collected the topics for our daily programme in the morning. Out of some discussions I had with Matthias at the office regarding the easiest/best/most painless way to set up an environment for M2 module development, we decided to put this as a topic on the wall for voting and discussion with other attendees.

A few minutes and a lot of votes later, we’ve found ourselves in a packed room full of developers who wanted to hear and discuss with us about this topic as well.

Spoiler: You’re maybe not gonna find the perfect Magento 2 setup for module development in this article. This is a collection of things that can be useful for your setup and what we discussed during our session at MageUnconference.

Out of scope: This article is not about setting up a new project with Magento 2. I do only focus on the development of a single module here.

 

Various M2 module development methods

Seperate Repository

The first method I’d like to share here is the method of setting up a single repository for your new module: This can either be a local repository or a remote one on GitHub/Bitbucket.

Add this module to your composer.json just as any 3rd party module and you’re good to go.

{
    "require": { "avoelkl/mymodule": "*" },
    "repositories": [
        {
            "type": "git",
            "url": "https://github.com/avoelkl/mymodule.git"
        }
    ]
}

Positive:

+ Easy way to start and set up

+ There’s only the need to add your module to composer.json, no additional registration/modification needed.

Negative:

– You have to do a lot of git commits/push/pulls/composer updates for your changes to take effect

– You’ll generate a lot of unneccessary commits during development (especially if you’re new to M2 development and trying out some stuff)

 

Working in the vendor dir

This approach it pretty straight forward: Set up a new Git repository, add it to the composer.json and run composer update. You’ll find your module files in the vendor directory afterwards, where you can edit them.

While I personally do not prefer this method as it feels rather dirty to me, applying changes and developing directly in the vendor folder seems not to be so unusual among Magento developers present in the MageUnconference session.

Positive:

+ no need to commit every change to test it

Negative:

– It’s not very obvious where the extension development happens.

– When someone else/you decide to remove the vendor folder completely (which should not be a problem usually, as you can always get the recent packages via composer install/upadte), you will lose all your uncommitted changes.

At least composer warns you if you have got modified content in the vendor dir when running a „composer update“ so you don’t lose your changes without confirming before.

Symlink to your module

Another easy way, which requires no Git repo at all to get started (but seriously, who wants that?) is to create a symlink in app/code to your module files outside the Magento folder structure.

 

You could also be interested in including a local repo via composer path https://getcomposer.org/doc/05-repositories.md#path

{
    "repositories": [
        {
            "type": "path",
            "url": "../../avoelkl/mymodule",
            "options": {
                "symlink": false
            }
        }
    ]
}

Folder Structure

From Magento 1 we’re used to work with our own folder structures and symlink them later via modman file.

Most of the current M1 modules I know either have the `app/` folder directly in their extension repo or a `src/` folder above them:

Version 1:

  • app/ modman

Version 2:

  • src/
  • src/app
  • test
  • modman

It seems to me (from what I can see in the official Magento 2 sample modules) that such a folder structure is not the default somewhat suggested, I think this is not very flexible.

  • .git
  • Block/
  • etc/
  • Model/
  • Observer/
  • view/
  • registration.php
  • composer.json

Different Ways of Setups

Fabian Schmengler (@fschmengler)

Fabian explained his current structure during the session.
The folder structure looks like this:

/var/www/m2.local/MyExt <= this folder also contains the .git dir

registration.php & Subfolders

/var/www/m2.local/MyExt/registration.php
/var/www/m2.local/MyExt/src
/var/www/m2.local/MyExt/test


Daniel Falke (@flyingmana)

https://github.com/Cotya/DashboardProject

David Verholen (@david_verholen)

https://github.com/davidverholen/magento2-dynamic-component-registry

Max Pronko

Max wrote a Blogpost about how to develop a Magento 2 module with modman

Weiterlesen

Präsentation beim 15. Magento Stammtisch Wien

Beim 15. Magento Stammtisch in Wien habe ich eine modifzierte Form meines „Secure input and output handling“ Talks präsentiert. Nachdem die Teilnehmer des Magento Stammtisches nicht nur Entwickler, sondern auch Projektmanager, Händler und Agenturen sind, habe ich ihn etwas weniger technisch gestaltet :-)

Weiterlesen

Updating PhpStorm Desktop/Launcher icon on Ubuntu

I keep forgetting how to edit my desktop entries after updating PhpStorm on my Ubuntu installation.

This is the file that needs to be edited: ~/.local/share/applications/jetbrains-phpstorm.desktop

Just update the paths for the Icon & Exec after the update:

cat ~/.local/share/applications/jetbrains-phpstorm.desktop
[Desktop Entry]
Version=1.0
Type=Application
Name=PhpStorm
Icon=/opt/PhpStorm-143.1184.87/bin/webide.png
Exec=“/opt/PhpStorm-143.1184.87/bin/phpstorm.sh“ %f
Comment=Develop with pleasure!
Categories=Development;IDE;
Terminal=false
StartupWMClass=jetbrains-phpstorm

 

Weiterlesen

Vierter MageStackDay am 15. und 16. Jänner 2016

MageStackDayNach zwei sehr erfolgreichen Online-Events und einer Pause im Herbst 2015 ist es im Jänner Zeit für eine neue Auflage des MageStackDays!

Am 15. und 16. Jänner treffen wir uns wieder online, um gemeinsam Fragen auf magento.stackexchange.com zu beantworten, zu schließen, zu verbessern, aufzuräumen und die Qualität dieser Plattform zu verbessern.

Abgesehen von der Plattform arbeiten wir derzeit an der neuen Version unserer Webseite, über die die Registrierung möglich sein wird.

Als nettes Extra gibt es MageStackDay sticker, die entweder persönlich bei den Organisatoren des MageStackDays erhältlich sind (Sander Mangel, Anna Völkl, David Manners) oder online via StickerMule bestellt werden können.

500 dieser wunderbaren Sticker, die wir weltweit verteilen, verdanken wir dem Sponsoring der CopeX GmbH!

Zur Unterhaltung und Informationsaustausch verwenden wir unsere MageStackday Slack Team. Bitte kontaktiert mich, wenn ihr eine Einladung für die Gruppe möchtet.

Weiterlesen

Konferenzen für Magento Entwickler 2016: MageTitans Mailand und MageUnconference in Berlin

In der Magento Welt gibt es mittlerweile eine Vielzahl an Konferenzen und Events, die verteilt über den ganzen Globus stattfinden.

Diese zwei tollen Events zu Beginn des Jahres möchte ich euch besonders ans Herz legen:

MageTitans IT

mage_titans_itNachdem 2014 und 2015 die MageTitans zum ersten und zweiten Mal in Manchester äußerst erfolgreich durchgeführt wurde, ist es 2016 Zeit für den ersten Ableger davon, der in Mailand in Italien stattfindet.

Leider habe ich es zur MageTitans nach Manchester nicht geschafft, die Rückmeldungen und vielen Tweets auf Twitter haben aber für ein äußerst tolles Event gesprochen :-) Ich bin schon gespannt auf die italienische Version.

Am Freitag, dem 5. Februar 2016 findet dieses eintägige Event, das sich speziell an Magento Entwickler richtet, statt und ich habe die Ehre, dort auch wieder einen Talk halten zu dürfen!

 

MageUnconference in Berlin

MageUC-LogoEin zweites tolles Event, ist die MageUnconference, die am Samstag & Sonntag, dem 12. und 13. März in Berlin in Deutschland stattfindet.

Ich war letztes Jahr dort und war großartig! Wie großartig genau könnt ihr in meinem Rückblick & FAQs vom Event 2015 nachlesen.

Im vergangenen Jahr waren großteils Entwickler vor Ort, die Organisatoren wollen das Event heuer aber auch speziell für Designer, Projekt-Manager, Shop-Betreiber etc. interessanter machen.

 Weitere Events

Darüber hinaus wird es wieder jede Menge Magento Stammtische/Meetups und Meet Magentos in verschiedenen Ländern, das Developer Paradise in Kroatien und auch wieder die Magento-eigenen Veranstaltungen Imagine und Magento Live geben.

Es gibt also viele tolle Möglichkeiten, mit der Magento Community persönlich in Kontakt zu treten, neue, spannende Dinge aus der Magento-Welt zu hören und sich auszutauschen.

Weiterlesen

Skype: online/offline Status Problem

Verwendet man Skype auf mehreren Geräten kann es passieren, dass man manchmal als online angezeigt wird, obwohl man nicht online ist.

Diese Anwort habe ich vom Skype support erhalten:

Wie ich verstehe, werden Sie ständig als Online angezeigt obwohl Sie es nicht sind.

In manchen Geräten, wie zum Beispiel Handys oder Tablets läuft Skype wenn Sie es schließen im Hintergrund weiter, weswegen in vielen Fällen der Skype Nutzer als Online angezeigt wird. Wenn Sie sich jedoch abmelden, sollte dass nicht passieren.

Ich möchte Sie bitte die Skype Anwendung auf Ihrem Computer zu benutzen und folgende Meldung in einem beliebigen Chat-Fenster einzutippen und auf Enter zu drücken.

/showplaces

Es wird eine Liste angezeigt auf der Sie erkennen können auf welchen Geräten Sie Online sind.

Anschließend möchte ich Sie bitten diese Meldung in einen beliebigen Chat-Fenster einzutippen und auf Enter zu drücken.

/remotelogout

Geben Sie nun wieder /showplaces ein um zu überprüfen ob Sie von allen Geräten abgemeldet wurdern.

Weiterlesen