- Version 10.0.1
- Project Flyweb Production
- Section blog
This blog post is a report with my struggle to install gettext.
All this started when I tried to test Unmark as a replacement for the delicious bookmarking service. My installed PHP Version 5.4 did not meet the technical requirements for Unmark so I had to update my PHP Version.
PHP 5.6. First Try
Since upgrading PHP was already on my task-list I jumped to the opportunity and installed PHP Version 5.6 via homebrew. Don't forget to disable the old PHP in the apache configuration
$ brew install php56
For some time, everything was smooth and Unmark worked just fine, until one day I opened up a PHP Newsletter project of mine and was confronted with the following PHP warning:
Warning message by PEAR Flexy Template Engine
The PEAR Flexy engine is used to parse an HTML Newsletter Template. The PHP warning message complains about a too long (HTML)
gettext stripped out some of the CSS code in the Newsletter HTML header. Why only some CSS gets stripped out and not the begin or ending of the (HTML)
string is beyond me.
It was recently that I started to use Foundations Ink Framework to create HTML Newsletters. I added all of Ink's CSS in the
<header> of the HTML Newsletter-Template but it seems some of it was to much. When I moved the CSS into an external file I could work around the problem and later I would in-line all the styles anyway.
A Try to fix the Problem
To avoid this warning I could switch to another PHP Template engine since Flexy is already outdated. But for various reasons this is currently not possible. So I'm stuck with Flexy for now.
In my older PHP Version the
gettext extension was not installed and maybe deactivating might solve my problem. In order to turn off PHP extensions I could use the disable-functions setting in the PHP configuration file:
disable_functions = gettext
I also tried to comment out the extension in the
sudo apachectl restart my to long (HTML)
string worked again. I didn't get a warning nor the CSS was stripped from the
string as before.
But this solution was futile, which I learned as soon as I opened up phpMyAdmin. Maybe PMA needed an update — but that did't fix the error either. After some digging in the PMA issues & bugs, I found out that PMA uses its own
gettext which causes some kind of other problems.
Back to the Start
First I just unlinked the brew php56 package, which I later removed completely.
$ brew unlink php56
Unlinking the brew package and restarting apache brought back my old PHP version, all the errors and warnings where gone. But I wanted the new PHP version 5.6 so I tried another route.
I stumbled across http://php-osx.liip.ch/ which provides PHP packages with everything pre-compiled for a development environment. And the nice thing is, my old PHP stays intact since the new PHP installation only uses symlinks like
brew does. The installation was easy peasy with just one
$ curl -s http://php-osx.liip.ch/install.sh | bash -s 5.6
Now I got a shiny new PHP with version 5.6 with a lots of php extensions ready to work. Still, the combination of deactivating
gettext and using a "to long" string, brought the PHP-Warning, the string stripping and PMA Error back.
Guess I will have to life with that
gettext problem until I'll stumble on a solution or can avoid using the good ol'Flexy. A look at stackoverflow shows
gettext causes people a lot of trouble.
Links & Research
- Gettext with larger texts - strings should be limited to one paragraph
- Translating longer texts (view and email templates) with gettext