====== Установка ionCube Loader====== Ioncube Loader скачиваем с сайта http://www.ioncube.com/loaders.php {{ :linux:ioncube_logo.png?nolink|}} ===== CentOS ===== Проверяем текущую версию PHP # php -v PHP 5.3.3 (cli) (built: May 10 2016 21:30:21) Copyright (c) 1997-2010 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies Скачиваем архив ionCube в /tmp Для x86 # wget http://downloads3.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz Для x86_64 # wget http://downloads3.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz Распаковываем архив # tar xzvf ioncube* Копируем модули ionCube Для x86 # mv ioncube /usr/lib/php/ioncube Для x86_64 # mv ioncube /usr/lib64/php/ioncube Добавляем модуль Для x86 # echo "zend_extension=/usr/lib/php/ioncube/ioncube_loader_lin_5.3.so" >> /etc/php.d/ioncube.ini Для x86_64 # echo "zend_extension=/usr/lib64/php/ioncube/ioncube_loader_lin_5.3.so" >> /etc/php.d/ioncube.ini Перезагружаем веб-сервер Apache или php-fpm # service httpd restart # service php-fpm restart Проверяем загружен ли модуль # php -m | grep ionCube Проверяем еще раз ''php -v'' PHP 5.3.3 (cli) (built: May 10 2016 21:30:21) Copyright (c) 1997-2010 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies with the ionCube PHP Loader (enabled) + Intrusion Protection from ioncube24.com (unconfigured) v5.1.2, Copyright (c) 2002-2016, by ionCube Ltd. ===== Debian ===== Проверяем текущую версию PHP # php -v PHP 5.6.20-0+deb8u1 (cli) (built: Apr 27 2016 11:26:05) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies Скачиваем архив ionCube в /tmp Для x86 # wget http://downloads3.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz Для x86_64 # wget http://downloads3.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz Распаковываем архив # tar xzvf ioncube* Смотрим где расположен каталог с php модулями # php -i | grep extension_dir extension_dir => /usr/lib/php5/20131226 => /usr/lib/php5/20131226 Копируем .so файл для нашей версии php # cp ./ioncube_loader_lin_5.6.so /usr/lib/php5/20131226 # chmod 755 /usr/lib/php5/20131226/ioncube_loader_lin_5.6.so # echo "zend_extension=/usr/lib/php5/20131226/ioncube_loader_lin_5.6.so" >> /etc/php5/mods-available/ioncube.ini # ln -s /etc/php5/mods-available/ioncube.ini /etc/php5/fpm/conf.d/01-ioncube.ini # ln -s /etc/php5/mods-available/ioncube.ini /etc/php5/cli/conf.d/01-ioncube.ini # ln -s /etc/php5/mods-available/ioncube.ini /etc/php5/cgi/conf.d/01-ioncube.ini # ln -s /etc/php5/mods-available/ioncube.ini /etc/php5/apache2/conf.d/01-ioncube.ini Перезагружаем веб-сервер Apache или php5-fpm # service apache2 restart # service php5-fpm restart Проверяем загружен ли модуль # php -m | grep ionCube Проверяем еще раз ''php -v'' # php -v PHP 5.6.20-0+deb8u1 (cli) (built: Apr 27 2016 11:26:05) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies with the ionCube PHP Loader (enabled) + Intrusion Protection from ioncube24.com (unconfigured) v5.1.2, Copyright (c) 2002-2016, by ionCube Ltd. with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies ===== Дополнительная информация ===== ==== Thread Safety ==== Внутри каталога ioncube находятся файлы ioncube_loader_lin_5.x.so и ioncube_loader_lin_5.x_**ts**.so ts версия нужна для режима Thread safety: [[http://php.net/manual/en/faq.obtaining.php#faq.obtaining.threadsafety|What does thread safety mean when downloading PHP?]] | [[http://php.net/manual/ru/faq.obtaining.php#faq.obtaining.threadsafety|Что означает потокобезопасность при скачке PHP?]] Если в phpinfo() значение Thread Safety установлено в disable, то берем файл ioncube_loader_lin_5.x.so Если установлено значение enable, то берем файл ioncube_loader_lin_5.x_ts.so http://softtime.ru/forum/read.php?id_forum=1&id_theme=85301 Просто модели параллельной обработки в разных операционных системах разные. Где-то параллельные процессы, а где-то параллельные потоки. Если PHP встраивается как модуль, он может выполняться в параллельных потоках. Если же он устанавливается как внешние CGI-приложения, то только как параллельный процесс. В последнем случае по барабану что он внутри своего процесса делает, поэтому он может быть non thread safe php. Если же он выполняется как часть потока или в виде отдельного потока, с среде других параллельных потоков, он должен подчиняться правилам синхронизации при доступе к ресурсам (thread safe php). В UNIX-системах традиционно были сильны именно процессы, часто системы целиком на них выстраивали, в Windows - процесс это просто контейнер, если в нем нет ни одного потока, он ничего не делает и операционная система его быстро уничтожает. Всю работу делают потоки, которых может быть много. В UNIX-же вообще нет таких потоков, там проще процесс создать. Т.е. фраза " Насколько я понял, thread safe php не создаёт отдельного потока" не совсем корректна - в Windows вы ничего без потоков не сделаете. Просто у вас наличие потоков может играть решающую роль, а может не играть такой роли. Ведь потоки имеют общее адресное пространство, а процессы раздельное. Т.е. одному процессу не так просто записать в память другому процессу информацию - нужно приложить усилия (переменные окружения, сообщения, сигналы, файлы, то что называется межпроцессорным взаимодействием). В потоках же наоборот нужно приложить усилия, чтобы они одновременно в одно и тоже место не обращались. \\ ==== PHP Fatal error ==== === The ionCube Loader is a Zend-Engine extension and not a module === ''Please specify the Loader using ‘zend_extension’ in php.ini'' Используйте в ini файле ''zend_extension='' вместо ''extension='' === The Loader must appear as the first entry in the php.ini file in Unknown on line 0 === ionCube модуль должен загружаться первым, а после него уже opcache и все остальные.