Umlaut domain problems

Living in an umlaut country like Germany umlaut domains are sometimes requested.
But: Umlaut domains resp. Internationalized Domain Names (IDN) are problematic.

My main pain points were these:

  1. Browsers tend to convert the unicode representations to ASCII Compatible Encoding (ACE) with punycode representations for security reasons when copying the url.
    So you will get a nice surprise when pasting the url somewhere:

F.e. having https://hürth-blüht.de/ in the browsers address bar will get you https://xn--hrth-blht-q9ag.de/ on copy/paste.
This punycode representation is very unfamiliar to normal users and will keep them from clicking the url because it looks suspicious.

Continue reading “Umlaut domain problems”

Updating OXID eShop to 6.2.0

Oxid eShop 6.2 is released and its a good step forward to a modernized codebase, embracing best practices and more symfony-like patterns.

Since i do a lot of coding with symfony besides OXID i was very exited about this new version. So i gave it a try and updated one of the shops i maintain. (Its not public yet, i will update this post once we launch, Its launched by now, yay: https://www.cafelehmitz-photobooks.com/).

I basically followed this upgrade guide: https://docs.oxid-esales.com/eshop/de/6.2/installation/update/von-6.1.x-auf-6.2.0-aktualisieren.html

So here is my experience updating OXID eShop 6.1.5 to 6.2.0:

Continue reading “Updating OXID eShop to 6.2.0”

Adminer for Sqlite in Docker

Recently i wanted to use Sqlite with Adminer in Docker and it turned out to be not so easy.
I actually thought i could just declare Adminer in a docker-compose.yml file with a volume mounted, similar as i would do for adminer with mysql.

Update: Today i would rather use the IntelliJ Database Tool for Sqlite administration.

But since Adminer is a popular hacking target they introduced a feature that does not allow to run adminer without a password, out of the box.
Sqlite database usually runs without password and dang, workaround needed!

Continue reading “Adminer for Sqlite in Docker”

Disable symfony deprecation warnings in PHPUnit tests

Symfony’s deprecation warnings while running tests is a great service to keep track with upcoming changes in newer symfony versions.
However these warnings can break your CI/CD pipeline and sometimes you cant fix all deprecation warnings immediatly.

To disable them you can set the ENV var
SYMFONY_DEPRECATIONS_HELPER=disabled
and the warnings will not be displayed anymore and CI/CD will pass again.
Update from comments:

SYMFONY_DEPRECATIONS_HELPER=weak
does also work and will still show the deprecation warnings count. (Thx Max)

Continue reading “Disable symfony deprecation warnings in PHPUnit tests”

Apache upgrade : Unknown Authz provider: from

For the record:
If you ever encounter this error while upgrading Apache webserver 2.2 to 2.4:

Unknown Authz provider: fromCode language: JavaScript (javascript)

Then you probably made a mistake replacing:

allow from all Code language: JavaScript (javascript)

with

Require all grantedCode language: PHP (php)

And just replaced allow with Require and not the complete directive, like:

Require from allCode language: JavaScript (javascript)

Then its time for a double facepalm :)

Directories settings in PHPStorm and IntelliJ Ultimate

I recently switched from PHPStorm to IntelliJ Ultimate because of some Java. But still i am working a lot on PHP and symfony projects.

One thing i usually do on symfony projects in PHPStorm is to edit the “Directories” in the settings to avoid having results from var/cache or var/logs in the search results.

Also it slows down the search which i heavily use. So i exlude all folders that should not be searched because they are cache files or are redundant in some other way.

Continue reading “Directories settings in PHPStorm and IntelliJ Ultimate”

mocking APIs with Guzzle

When working with APIs you sometimes cant use the live API in the tests.
Because you dont own the API, dont want to spam, cant create entities for testing or various other reasons.

Then you need to mock the API and deliever responses from fixtures.
Though there is this term of “Don’t mock what you don’t own” we will mock the API because we dont own it. :)

https://github.com/julienfalque/http-mock is a nice library which helps a lot when mocking an API.
And when your client is using Guzzle there is also a Guzzle handler for HttpMock that makes integration easy.

How does this work?
Continue reading “mocking APIs with Guzzle”