Показаны сообщения с ярлыком php5. Показать все сообщения
Показаны сообщения с ярлыком php5. Показать все сообщения

среда, 17 марта 2021 г.

ubuntu, php, xhprof

"XHProf был разработан Facebook и заброшен , когда они переехали в HHVM. Теперь есть fork проекта под названием Tideways , который обещает добавить поддержку PHP версий 5.6 и 7."

Хотя если перейти на http://pecl.php.net/package/xhprof то версия 2.2.3 там от конца 2020 года...

Итого: можно ставить так

apt install php-pear

apt install php-dev # phpize

pecl install -f xhprof
Build process completed successfully
Installing '/usr/lib/php/20190902/xhprof.so'
install ok: channel://pecl.php.net/xhprof-2.2.3
configuration option "php_ini" is not set to php.ini location
You should add "extension=xhprof.so" to php.ini
Вносим в /etc/php/7.4/mods-available/xhprof.ini

extension=xhprof.so
xhprof.output_dir="/tmp/xhprof"

и в /etc/php/7.4/cli/conf.d делаем ln -s /etc/php/7.4/mods-available/xhprof.ini 20-xhprof.ini

повторить для апача или fpm


или через tideways (веб версия - платно! Сам xhprof вроде нет, но там формат другой, нужно переписывать код)

https://tideways.com/profiler/xhprof-for-php7

https://github.com/tideways/php-xhprof-extension

https://github.com/tideways/php-xhprof-extension/releases

https://gist.github.com/snoek09/72d0563d350fcc9ea6117790eeb6e60f


GUI

https://github.com/perftools/xhgui

apt install mongodb

#pecl install mongodb

apt install php-mongodb

systemctl enable mongodb

grep bind /etc/mongodb.conf # обязательно проверяем что есть bind_ip и он не выставлен в 0.0.0.0 - это чревато! Должно быть 127.0.0.1

systemctl restart mongodb

echo 'extension=mongodb.so' > /etc/php/7.4/mods-available/mongodb.ini

и повторяем включения

apt install composer

composer install --no-dev

curl 127.0.0.1:8080/install.php


понедельник, 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/, но переработано и дополнено.

пятница, 8 апреля 2011 г.

PHP и FPM

Некоторые говорят, что FPM пока несколько нестабилен. И просто не везде подходит.
Во freebsd можно выбирать, собирать с этим патчем или нет (даже на 5.3.6), тогда как в centos 5.6 включена версия с патчем, и как я понимаю, возможности его убрать штатно нет. Только пересобирать ручками.
Про дебиан не в курсе, но думаю, там тоже оно включено.
gentoo тоже в шоколаде.. )) спасибо USE флагам.

Вообще, он штатно включен с версии 5.3.3

четверг, 18 ноября 2010 г.

eaccelerator

Попробовал поставить eaccelerator.
#yum install php-eaccelerator

---> Package php-eaccelerator.i386 1:0.9.5.2-2.el5 set to be updated
--> Processing Dependency: php-zend-abi = 20050922 for package: php-eaccelerator
--> Finished Dependency Resolution
1:php-eaccelerator-0.9.5.2-2.el5.i386 from epel has depsolving problems
--> Missing Dependency: php-zend-abi = 20050922 is needed by package 1:php-eaccelerator-0.9.5.2-2.el5.i386 (epel)
Error: Missing Dependency: php-zend-abi = 20050922 is needed by package 1:php-eaccelerator-0.9.5.2-2.el5.i386 (epel)
You could try using --skip-broken to work around the problem
You could try running: package-cleanup --problems
package-cleanup --dupes
rpm -Va --nofiles --nodigest
The program package-cleanup is found in the yum-utils package.

Что за..

#yum install php-zend-abi
Package php-common-5.2.10-1.el5.centos.i386 already installed and latest version
Nothing to do

Ага, было слияние пакетов. Но та версия, что в epel, пока об этом не знает. А в centos-testing такого пакета просто нет.

Попробуем поставить remi
#rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
#yum install --enablerepo=remi php-eaccelerator

И... Оно хочет мне обновить php версию до 5.3!
5.3.3-1.el5.remi

Последняя попытка.
yum install --skip-broken php-eaccelerator

И все-равно не оно. И опции --nodeps или --force тоже нету. И даже банального --version=x.x
Вот за что ненавижу предкомпилированные пакеты -- чуть отклонение от нормы и собирай из исходников.

Дальше-больше. php-eaccelerator-0.9.5.2-2.el5.i386 похоже вообще не заработает.
http://eaccelerator.net/ticket/338

А потом я нашел решение.
#rpm -ihv http://centos.alt.ru/repository/centos/5/x86_64/centalt-release-5-3.noarch.rpm
#yum install php-eaccelerator

Все, стоит 0.9.6 и на той версии, что мне нужна.

вторник, 9 ноября 2010 г.

debian

Попросили настроить ISPManager в fastcgi режиме на дебияне.
Отвратительная система... Половины штатных утилит нет, пакеты старые... Нету банального dig!

Итак.
Сначала, ставим бинд в качестве кэша
# aptitude install bind9 bind9utils
(можно и не делать, а можно поставить dnsmasq)

Обновляем nginx, тут есть репы
http://wiki.nginx.org/Install

deb http://nginx.org/packages/debian/ squeeze nginx
deb-src http://nginx.org/packages/debian/ squeeze nginx
(только для 6, в 5 ищем чужие сборки)


Проверяем, что стоит какой-либо fcgi модуль.
Варианта 2:
libapache2-mod-fcgid - an alternative module compat with mod_fastcgi
libapache2-mod-fastcgi - Apache 2 FastCGI module for long-running CGI scripts

Проверяем, что есть php-cgi, и делаем симлинк /usr/local/bin/php-cgi в /usr/bin
после этого разрешаем cgi в настройках и переключаем в режим fastcgi.

понедельник, 1 ноября 2010 г.

И снова пых...

Обновлял php на другом сервере, словил ошибку..

In file included from /usr/local/include/apache2/httpd.h:44,
                 from /usr/home/max/dist/php-
5.2.13/sapi/apache2handler/php_apache.h:24,
                 from /usr/home/max/dist/php-
5.2.13/sapi/apache2handler/mod_php5.c:26:
/usr/local/include/apache2/ap_regex.h:90: error: conflicting types for 
'regoff_t'
/usr/home/max/dist/php-5.2.13/regex/regex.h:17: error: previous declaration of 
'regoff_t' was here
*** Error code 1
Оказалось, зафиксированный баг
http://bugs.php.net/bug.php?id=52187
Вылечилось правкой /usr/local/include/apache2/ap_regex.h, 90 строка, комментированием или удалением этого объявления.

среда, 27 октября 2010 г.

обновляем php

Надо было обновить php до 5.2.14 во фре. Помня предыдущие мытарства, оттягивал этот момент как мог. А тут еще ворох проблем, и прежде всего - простой portupgrade не пройдёт, ибо php5 теперь содержит 5.3, надо его выносить и ставить php52
Пробовал править +CONTENTS в /var/db/pkg, с переименованием папок с пакетами из php5 в php52, и потом pkgdb -F
Правда, правил только php5 и php5-extensions
Оказалось, проще будет так:
pkg_info|grep php5|awk '{print $1}'>php5-pkg
cat php5-pkg|xargs pkd_deinstall -f -
cd /usr/ports/lang/php52
и далее по списку ставим сам пхп, экстеншены... А также наверняка вынесенные phpMyAdmin, и всё "лишнее" из php5-pkg.

Пачка засад:
PHP Warning:  [eAccelerator] This build of "eAccelerator" was compiled for PHP version 5.2.11. Rebuild it for your PHP version (5.2.14) or download precompiled binaries.\n in Unknown on line 0
PHP Fatal error:  Unable to start eAccelerator module in Unknown on line 0
Надо пересобирать акселератор.

 Пересобрал.
PHP Fatal error:  Unable to start eAccelerator module in Unknown on line 0
eAccelerator: Could not allocate 67108864 bytes, the maximum size the kernel allows is 33554432 bytes. Lower the amount of memory request or increase the limit in /proc/sys/kernel/shmmax.

Увеличил до 64М
# sysctl kern.ipc.shmmax=67108864
kern.ipc.shmmax: 33554432 -> 67108864

Не помогло.
PHP Fatal error:  Unable to start eAccelerator module in Unknown on line 0
eAccelerator: shmmax should be at least 2MB

Тут: http://m.habrahabr.ru/post/67557/ нашел, что надо скопировать файлик.
cp /usr/local/share/examples/eaccelerator/eaccelerator.ini /usr/local/etc/php/
Не помогло. Правда, у меня был php.ini еще поправлен, прямо туда вписана настройка.
Хотя тут: http://nil.nu/ нашел подсказку:
kern.ipc.shmall=65536
kern.ipc.shmmax=268435456
и еще видел где-то совет прописать
eaccelerator.shm_max="32"
Больше 2, лучше 16-32.
После этого поднялось. Ура. 


checking for APR... configure: error: the --with-apr parameter is incorrect.

Что-то не то с APR, вылечил так:
cd /usr/ports/devel/apr1
make install clean
Хотя тут: http://free-pc-help.ru/news/checking-for-apr-configure-error-the-with-apr-parameter-is-incorrect/ сказано, что пакет надо бы пересобрать с тредами, но у меня его а) не стояло, б) галочка  на тредах была.