Установка 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 через менеджер пакетов, кроме модуля апача.

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

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

иногда это дело в некоторых билдах кастомными пачами отрезают - тогда ой
 
В плане сборки... качаю архив, распаковываю его запускаю ./configure со всеми опциями, затем
make
sudo make install
и рестарт апача.
Перед всем этим я бы советовал сделать apt-get build-dep php5 - вытянуть все зависимости для сборки пакетов.
 
[quote="fixxxer, post: 586158"иногда это дело в некоторых билдах кастомными пачами отрезают - тогда ой[/quote]
гы, в 10.04 было, в 10.10 - отрезали...
 
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

Для меня темный лес.
 
Просто не понятно в каких случаях надо
-with-mysql=/usr или --with-gd или --enable-cli или --with-mcrypt=/usr/local
В случаях когда ты что-то куда-то ставил руками в другое место.
По умолчанию в ./configure кстати, почти все включено.
 
кмк, лучше из пакетов. можно поискать альтернативный репозиторий или 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.
 
В случаях когда ты что-то куда-то ставил руками в другое место.
По умолчанию в ./configure кстати, почти все включено.

Т.е. по идее мне надо просто перечислять --enable-module=[module name] и добавить потом --with-mysqli=mysqlnd..

Есть одна странность иногда модуль подключается используя --enable-soap а иногда --with-gd Не понятно
 
Т.е. по идее мне надо просто перечислять --enable-module=[module name] и добавить потом --with-mysqli=mysqlnd..
Есть одна странность иногда модуль подключается используя --enable-soap а иногда --with-gd Не понятно
Да.
И смотреть, на что будет ругаться ./configure
Даже для первого раза работы на часик обычно.
Чего не будет хватать - или поставишь из пекла, или пересоберешь еще разок.
Советую кстати конфируграционные опции банально в файлике описать, и файлик запускать - будет куда проще править.
 
Есть одна странность иногда модуль подключается используя --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])
 
Вполне возможно, что эти дебиановские (или какие они там) патчи отрубают только показ configure-строки в phpinfo(), но не стрипают саму строку, тогда можно так


strings `which php`|grep configure
 
Советую кстати конфируграционные опции банально в файлике описать, и файлик запускать - будет куда проще править.

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

#! /bin/sh
#
# Created by configure

'./configure' \
'--disable-all' \
'--disable-cgi' \
'--enable-debug' \
'--with-mysql' \
'--enable-memcache' \
'--enable-session' \
"$@"
 
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.
Вау! Спасибо, не знал. Убер полезное знание.
 
Значит стрипают. Нахрена интересно. Впрочем дебиановские пакеты вообще странные люди собирают.
 
Нашел вариант решения проблемы. Использовать 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
 
Скачал версию бету и все собралось удачно. Надеюсь это поможет и проект заведутся :)
 
Сверху