Установка PHP 5.3.3 из сорцев

programmer_2006

Новичок
Ubuntu 10.10
Мне необходимо, что бы PHP поддерживал mysqlnd для корректной работы с mysqli, а точнее функции mysqli_fetch_all которая не пашет при стандартном пакете (php5-mysql, хотя в нем поддержка mysqli включена).
Мне необходимо его собрать с такими опциями
'--with-mysqli=mysqlnd' '--with-pdo-mysql=mysqlnd'
Но я еще не разу не собирал пхп Но вроде это не сложно. Ед. мне надо узнать с какими опциями сейчас собран пхп, что бы руками собрать такой же.
Вопрос как узнать с какими опциями он собран? Когда то для nginx-а узнавал, но как не помню.

В плане сборки... качаю архив, распаковываю его запускаю ./configure со всеми опциями, затем
make
sudo make install
и рестарт апача.

Предварительно мне надо удалить все что связано с php через менеджер пакетов, кроме модуля апача.

Я все правильно понял? Если кто даст ссылку на путевую статью буду благодарен.
 

fixxxer

К.О.
Партнер клуба
>Вопрос как узнать с какими опциями он собран?

phpinfo()
или php -i | grep configure

иногда это дело в некоторых билдах кастомными пачами отрезают - тогда ой
 

флоппик

promotor fidei
Команда форума
Партнер клуба
В плане сборки... качаю архив, распаковываю его запускаю ./configure со всеми опциями, затем
make
sudo make install
и рестарт апача.
Перед всем этим я бы советовал сделать apt-get build-dep php5 - вытянуть все зависимости для сборки пакетов.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
[quote="fixxxer, post: 586158"иногда это дело в некоторых билдах кастомными пачами отрезают - тогда ой[/quote]
гы, в 10.04 было, в 10.10 - отрезали...
 

programmer_2006

Новичок
php -i | grep configure - да типа такого и нужно было. Но как написали выше не пашет :)
Я хотел получить Нечто вроде этого

'./configure' '--with-mysql=/usr' '--with-curl=/usr/local' '--with-gd' '--enable-cli' '--with-zlib' '--with-openssl' '--enable-bcmath' '--with-mcrypt=/usr/local' '--prefix=/usr/local/php' '--enable-mbstring' '--enable-soap' '--with-mysqli=mysqlnd' '--with-pdo-mysql=mysqlnd' --with-apxs2=/usr/bin/apxs2 --with-config-file-path=/etc/php5/apache2/
Что бы скопировать, добавить нужные параметры и вставить.

Похоже придется как то руками. Просто не понятно в каких случаях надо
-with-mysql=/usr или --with-gd или --enable-cli или --with-mcrypt=/usr/local

Для меня темный лес.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Просто не понятно в каких случаях надо
-with-mysql=/usr или --with-gd или --enable-cli или --with-mcrypt=/usr/local
В случаях когда ты что-то куда-то ставил руками в другое место.
По умолчанию в ./configure кстати, почти все включено.
 

programmer_2006

Новичок
кмк, лучше из пакетов. можно поискать альтернативный репозиторий или unstable (testing)
по крайней мере, так можно поступить в Debian, вероятно для Ubuntu тоже есть

зы http://www.robsearles.com/2009/10/04/installing-php53-on-ubuntu-jaunty/
http://www.robsearles.com/2009/10/04/installing-php53-on-ubuntu-jaunty/ подобное я сначала и сделал т.е. добавил
deb http://php53.dotdeb.org stable all
deb-src http://php53.dotdeb.org stable all

Но толку не было. В менеджере пакетов смотрю на модуль php5-mysql в нем пишут, что он заменяет php5-mysqli но как его поставить не понятно.
Так же делаю фильтрацию пакетов по http://php53.dotdeb.org
Пакета для php5-mysql или для php5-mysqli нет, что то их блокирует.

Знакомый ставил на дебиане используя http://php53.dotdeb.org stable all у нег овсе пучком и пхп собран с нужным мне mysqlnd.
 

programmer_2006

Новичок
В случаях когда ты что-то куда-то ставил руками в другое место.
По умолчанию в ./configure кстати, почти все включено.
Т.е. по идее мне надо просто перечислять --enable-module=[module name] и добавить потом --with-mysqli=mysqlnd..

Есть одна странность иногда модуль подключается используя --enable-soap а иногда --with-gd Не понятно
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Т.е. по идее мне надо просто перечислять --enable-module=[module name] и добавить потом --with-mysqli=mysqlnd..
Есть одна странность иногда модуль подключается используя --enable-soap а иногда --with-gd Не понятно
Да.
И смотреть, на что будет ругаться ./configure
Даже для первого раза работы на часик обычно.
Чего не будет хватать - или поставишь из пекла, или пересоберешь еще разок.
Советую кстати конфируграционные опции банально в файлике описать, и файлик запускать - будет куда проще править.
 

tony2001

TeaM PHPClub
Есть одна странность иногда модуль подключается используя --enable-soap а иногда --with-gd Не понятно
--enable-XXX означает, что XXX не требует никаких внешних зависимостей/библиотек.
У --enable опции есть только два значения - yes/no.

--with-XXX означает, что XXX требует предварительной установки сторонней либы (или, как в случае с GD, МОЖЕТ использовать стороннюю либу, а может и не использовать).
У --with опции обычно значение это путь, куда была установлена либа.


Еще по теме:
dnl If your extension references something external, use with:

dnl PHP_ARG_WITH($extname, for $extname support,
dnl Make sure that the comment is aligned:
dnl [ --with-$extname Include $extname support])

dnl Otherwise use enable:

dnl PHP_ARG_ENABLE($extname, whether to enable $extname support,
dnl Make sure that the comment is aligned:
dnl [ --enable-$extname Enable $extname support])
 

fixxxer

К.О.
Партнер клуба
Вполне возможно, что эти дебиановские (или какие они там) патчи отрубают только показ configure-строки в phpinfo(), но не стрипают саму строку, тогда можно так


strings `which php`|grep configure
 

tony2001

TeaM PHPClub
Советую кстати конфируграционные опции банально в файлике описать, и файлик запускать - будет куда проще править.
Кстати, текущая конфигурация еще и пишется в файл config.nice, который можно исправить & перезапустить.
Одна из тех вещей, которых реально не хватает при сборке других проектов из исходников..

#! /bin/sh
#
# Created by configure

'./configure' \
'--disable-all' \
'--disable-cgi' \
'--enable-debug' \
'--with-mysql' \
'--enable-memcache' \
'--enable-session' \
"$@"
 

флоппик

promotor fidei
Команда форума
Партнер клуба
strings `which php`|grep configure
Не хотит:
Код:
gorbunov@gorbunov:~$ strings `which php`|grep configure
Unable to find the wrapper "%s" - did you forget to enable it when you configured PHP?
Unable to find the socket transport "%s" - did you forget to enable it when you configured PHP?
gorbunov@gorbunov:~$
Кстати, текущая конфигурация еще и пишется в файл config.nice.
Вау! Спасибо, не знал. Убер полезное знание.
 

fixxxer

К.О.
Партнер клуба
Значит стрипают. Нахрена интересно. Впрочем дебиановские пакеты вообще странные люди собирают.
 

programmer_2006

Новичок
Нашел вариант решения проблемы. Использовать Xampp. Для одного проекта вроде вполне не плохо + не надо мучатся со сбором пхп (у меня там затык с memcache и еще чем то).
Но у Xampp нет поддержки apc, а в проекте эта либа активно юзается.
Нашел пару статей
http://townx.org/apc_and_xampp
http://www.agileapproach.com/blog-entry/howto-install-pecl-apc-cache-with-xampp-linux
Но на сборе у меня валится (apt-get build-dep php5 установил).

Пробовал разные версии 3.0.15 и 3.0.19

Из папки с apc Запуская в консоли такую команду

sudo /opt/lampp/bin/phpize-5.3.1 && ./configure --enable-apc && make && make install
Ошибка такая (букв там много перед ошибкой) но заканчивается так ** [apc_compile.lo] Ошибка 1

Пробовал так

sudo /opt/lampp/bin/phpize-5.3.1 && ./configure --enable-apc --with-php-config=/opt/lampp/bin/php-config-5.3.1 && make && make install

Ошибка такая
apc.h:61: fatal error: php.h: No such file or directory
compilation terminated.
make: *** [apc_compile.lo] Ошибка 1

Т.е. если я не могу добавить apc то не смогу добавит и memcache при сборе php руками.
Как по мне для одного проекта лучше все таки добавить apc и не парится.

Буду благодарен за любую помощь. Может у кого есть собранная apc.so
 

programmer_2006

Новичок
Скачал версию бету и все собралось удачно. Надеюсь это поможет и проект заведутся :)
 
Сверху