Не ставятся некоторые modx-пакеты (Ubuntu 14.04+)
В очередной раз после обновления modx наступил на грабли при установке msearch2 (иногда бывает и у других пакетов), возможно кому-то будет полезно:
Итак, имеем ubuntu 14.04+ и modx revo
при установке msearch2 процесс останавливается на Trying to download russian dictionary…
Суть проблемы в файле: /your_site/core/packages/msearch2-x.y.z-pl/modCategory/%hash%.resolve.dictionaries.resolver (стр. 62)
После создания нового объекта PclZip нет проверки его на null, а стоило бы, потому как в некоторых сборках PHP на ubuntu функция gzopen называется gzopen64, и в /core/xpdo/compression/pclzip.lib.php PHP радостно падает, так как о gzopen64 ему ничего не известно.
Ветка на launchpad по этой проблеме:
https://bugs.launchpad.net/ubuntu/+source/php5/+bug/1315888
Вариант решения — пропатчить /core/xpdo/compression/pclzip.lib.php, например, так как описано тут http://piwigo.org/forum/viewtopic.php?id=23759
Исходная функция:
Итак, имеем ubuntu 14.04+ и modx revo
при установке msearch2 процесс останавливается на Trying to download russian dictionary…
Суть проблемы в файле: /your_site/core/packages/msearch2-x.y.z-pl/modCategory/%hash%.resolve.dictionaries.resolver (стр. 62)
После создания нового объекта PclZip нет проверки его на null, а стоило бы, потому как в некоторых сборках PHP на ubuntu функция gzopen называется gzopen64, и в /core/xpdo/compression/pclzip.lib.php PHP радостно падает, так как о gzopen64 ему ничего не известно.
Ветка на launchpad по этой проблеме:
https://bugs.launchpad.net/ubuntu/+source/php5/+bug/1315888
Вариант решения — пропатчить /core/xpdo/compression/pclzip.lib.php, например, так как описано тут http://piwigo.org/forum/viewtopic.php?id=23759
Исходная функция:
function PclZip($p_zipname)
{
// ----- Tests the zlib
if (!function_exists('gzopen'))
{
die('Abort '.basename(__FILE__).' : Missing zlib extensions');
}
// ----- Set the attributes
$this->zipname = $p_zipname;
$this->zip_fd = 0;
$this->magic_quotes_status = -1;
// ----- Return
return;
}
Исправленный вариант:function PclZip($p_zipname)
{
// ----- Tests the zlib
if (!extension_loaded('zlib'))
{
die('Abort '.basename(__FILE__).' : Missing zlib extensions');
}
if (function_exists('gzopen'))
{
$this->gzopen_func = 'gzopen';
}
elseif (function_exists('gzopen64'))
{
$this->gzopen_func = 'gzopen64';
}
else
{
die('Abort '.basename(__FILE__).' : Could not find gzopen');
}
// ----- Set the attributes
$this->zipname = $p_zipname;
$this->zip_fd = 0;
$this->magic_quotes_status = -1;
// ----- Return
return;
}
Комментарии: 9
Есть такая проблема. Сам столкнулся.
Советую оформить issue в репозитории MODX. Можно даже сразу pull request с исправлением.
версия:
Linux Electrica 3.13.0-57-generic #95-Ubuntu SMP Fri Jun 19 09:27:48 UTC 2015 i686 i686 i686 GNU/Linux
вроде как 32 бита, а все равно такая же проблема.
Linux Electrica 3.13.0-57-generic #95-Ubuntu SMP Fri Jun 19 09:27:48 UTC 2015 i686 i686 i686 GNU/Linux
вроде как 32 бита, а все равно такая же проблема.
Говорят, что это вообще баг старой версии PHP.
У нас на хостинге Ubuntu 14.04.3 LTS x64 с PHP 5.5 и такой проблемы нет.
У нас на хостинге Ubuntu 14.04.3 LTS x64 с PHP 5.5 и такой проблемы нет.
Тоже стоит 5.5. Но не ставился пакет ( Хотя на старом серваке с точь такими же системками все ставилось без проблем.
как я понимаю, проблема есть именно на 32битных системах, у меня, например, точно такая же ubuntu 14.04.3 LTS, но x32 + PHP 5.5.9 и баг имеется
Сделал pull-request в xpdo, возможно поправят в следующем релизе.
Сделал pull-request в xpdo, возможно поправят в следующем релизе.
Спасибо!
и кстати, про проверку на null — это я погорячился, смысла в ней нет никакого, php сделает die () в конструкторе и до распаковки дело не дойдет :)
Я и не стал дёргаться =)
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.