[BlueOnyx:17704] Re: More Roundcube issues - confirmed

Michael Stauber mstauber at blueonyx.it
Wed May 27 19:13:22 -05 2015


Hi Gregg,

> However there are still some pear issues, like idna2 and mime.
> If I go ahead and upgrade the PHP from the BO store, will that solve all the
> pear issues that come with the new roundcube?
> Or should I just keep trying to solve the dependencies?

I just tried it on 5209R with RoundCube v1.1.1:

PHP-5.4.16: (Stock PHP) Not working, blank page.
PHP-5.3.29: Not working, complains Net_IDNA2 missing.
PHP-5.4.40: Not working, blank page. No error shown or logged.
PHP-5.5.25: Not working, blank page. No error shown or logged.
PHP-5.6.8:  Not working, blank page. No error shown or logged.

The exact error message I got from PHP-5.3.29 was this:

AH01071: Got error 'PHP message: PHP Fatal error:  Class 'Net_IDNA2' not
found in
/home/.sites/28/site1/web/roundcube/program/lib/Roundcube/bootstrap.php
on line 440'

Which is actually this code:

if (!function_exists('idn_to_utf8'))
{
    function idn_to_utf8($domain)
    {
        static $idn, $loaded;

        if (!$loaded) {
            $idn = new Net_IDNA2();
            $loaded = true;
        }

        if ($idn && $domain && preg_match('/(^|\.)xn--/i', $domain)) {
            try {
                $domain = $idn->decode($domain);
            }
            catch (Exception $e) {
            }
        }
        return $domain;
    }
}

See http://php.net/manual/en/function.idn-to-utf8.php

Which is pretty ridiculous and utterly moronic. This code says: If the
function 'idn_to_utf8' *not* exists in PHP (it is *only* provided by the
optional PECL IDN extension!), then declare the function 'idn_to_utf8'
and call the (optional) PEAR extension Net_IDNA2() to simulate that
functionality.

I'm looking at this code and I'm like: WTF! YGBSM!!

PHP has UTF-8 handling built in since ages. There are tons of freely
distributed Classes which handle IDN conversions. But noooooo ... these
gentlemen now require some exotic beta-quality PECL modules which are
not part of any PHP build by default. Neither from RedHat, CentOS, SL or
ourselves.

FWIW:

[root at 5209r php-5.6]# /home/solarspeed/php-5.6/bin/pear install Net_IDNA2
Failed to download pear/Net_IDNA2 within preferred state "stable",
latest release is version 0.1.1, stability "beta", use
"channel://pear.php.net/Net_IDNA2-0.1.1" to install
install failed

Sooo ... beta quality as well. But once it is installed, RoundCube 1.1.1
works with PHP-5.6.

If I try to compile the beta version of "idn" instead ...

[root at 5209r php-5.6]# /home/solarspeed/php-5.6/bin/pecl install
channel://pecl.php.net/idn-0.2.0

... I get tons and tons of compile errors, as that PECL module *only*
works with PHP-5.3, but not PHP-5.4, 5.5 or 5.6.

It is a major pain in the gluteus maximus to ship pre-built PECL or PEAR
extensions for each and any version of PHP that we support. As you can
see: These shitty PECL modules aren't even available for some (or most!)
PHP versions.

Sooo ... really: I'm *this* close (/me holds up thumb and index finger
tightly pressed together) to dump RoundCube from the shop and go fishing
for another Webmailer that doesn't suck.

-- 
With best regards

Michael Stauber



More information about the Blueonyx mailing list