понедельник, 30 мая 2011 г.

Установка ionCube на Debian

смотрим нашу версию php
php -v

Создаём каталог
cd $(mktemp -d)

Смотрим архитектуру и качаем нужную версию
uname -m

wget http://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz
или
wget http://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz

(офсайт)

распаковываем
tar zxvf ioncube_loaders_lin_*

перемещаем на новое место
mv ioncube /usr/local/
или
mv ioncube /opt/

дальше надо вписать в конфиги php, но некоторые доки советуют вписывать в php.ini - это неправильно. Причём был случай - клиент сам вписал куда-то в середину файла и php просто его игнорировал. Правильно - создать отдельный файл в /etc/php5/conf.d/
echo "zend_extension=/usr/local/ioncube/ioncube_loader_lin_5.2.so" >> /etc/php5/conf.d/ioncube.ini
Эта строка может меняться, если мы сохранили в /opt или у нас другая версия php, приводим под свою систему.

Теперь проверяем. Проверка через phpinfo() мало что даёт -- если модуль не подключился, он там указан не будет. Но причин не покажет. Надо через сам php:
php -v

Виды ответов:
Failed loading /usr/local/ioncube/ioncube_loader_lin_5.2_ts.so: /usr/local/ioncube/ioncube_loader_lin_5.2_ts.so: wrong ELF class: ELFCLASS32
Скачана 32-бит версия, а нужна 64.

Failed loading /usr/local/ioncube/ioncube_loader_lin_5.2_ts.so: /usr/local/ioncube/ioncube_loader_lin_5.2.so: wrong ELF class: ELFCLASS64
Тут наоборот, система 32 бита (x86), а скачали 64 (x86-64). Качаем версию под 32 бита.

Failed loading /usr/local/ioncube/ioncube_loader_lin_5.2_ts.so: /usr/local/ioncube/ioncube_loader_lin_5.2_ts.so: undefined symbol: core_globals_id
Значит, нам нужен другой вариант (не _ts)

С "не той" версией php не проверялось.

Когда всё нормально, у меня полнвый вывод был такой:
# php -v
PHP 5.2.6-1+lenny9 with Suhosin-Patch 0.9.6.2 (cli) (built: Aug 4 2010 06:06:53)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
with the ionCube PHP Loader v4.0.8, Copyright (c) 2002-2011, by ionCube Ltd.

Теперь перезапустим апач
/etc/init.d/apache2 restart

Теперь в phpinfo() должна появиться подпись как в php -v и в Additional Modules будет строка ionCube Loader

Делалось на основе доки http://magento-forum.ru/topic/1008/, но переработано и дополнено.

11 комментариев:

  1. Спасибо. Обнаружил в логе Apache ошибку Failed loading /usr/local/ioncube/ioncube_loader_lin_5.2_ts.so: /usr/local/ioncube/ioncube_loader_lin_5.2_ts.so: wrong ELF class: ELFCLASS32.
    Ваш материал помог ее исправить.

    ОтветитьУдалить
  2. вот такую ошибку пишет Failed loading /usr/local/ioncube/ioncube_loader_lin_5.4.so: /usr/local/ioncube/ioncube_loader_lin_5.4.so: wrong ELF class: ELFCLASS64

    Я пробывал и 86 и 64 не помогает ОС стоит Debian, качал вот этот архив http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz

    ОтветитьУдалить
  3. > ELFCLASS64
    это версия 64 бита, система видимо 32. Качаем ioncube_loaders_lin_x86.tar.gz
    на 32 бит версии этой ошибки быть не может.

    ОтветитьУдалить
    Ответы
    1. Так я сразу качал 86-64 версию, ну да ладно, скачал ioncube_loaders_lin_x86.tar.gz вот что пишет:
      Failed loading /usr/local/ioncube/ioncube_loader_lin_5.2_ts.so: /usr/local/ioncube/ioncube_loader_lin_5.2_ts.so: undefined symbol: ts_resource_ex

      Удалить
    2. Все спасибо, проблема решена.

      Удалить
    3. а нет, не решена, вот что пишет Cannot load the ionCube PHP Loader - it was built with configuration 2.2.0, whereas running engine is API220090626,NTS

      Удалить
    4. Буржуи рулят:
      Cannot load the ionCube PHP Loader - it was built with configuration 2.2.0, whereas running engine is API220090626,NTS

      This PHP error is being caused because IonCube is trying to load the old version. To update this on Debian:

      EDIT: /etc/php5/conf.d/aa_ioncube.ini
      FIND: zend_extension = /usr/local/ioncube/ioncube_loader_lin_5.2.so
      REPLACE: zend_extension = /usr/local/ioncube/ioncube_loader_lin_5.3.so

      Удалить
  4. Спасибо автору, все работает!

    ОтветитьУдалить
  5. Спасибо автору! Все работает, установка очень легкая потому, что очень доходчиво расписан процесс!

    ОтветитьУдалить
  6. у меня пишет Invalid command 'zend_extension'

    ОтветитьУдалить
  7. Здравствуйте. У меня пишет такое. Подскажите, как исправить?
    Failed loading /usr/lib/php5/20100525/ioncube_loader_lin_5.4_ts.so: /usr/lib/ph
    p5/20100525/ioncube_loader_lin_5.4_ts.so: undefined symbol: core_globals_id PHP Warning: Module 'ionCube Loader' already loaded in Unknown on line 0 The ionCube PHP Loader is disabled because of startup problems. [PHP Modules]

    ОтветитьУдалить