Назад | Перейти на главную страницу

Обновление PHP с версии 5.3 до 5.4.7

Я быстро, так сказать, заметил эту тему, я искал и есть много решений. Однако эти решения не работают для меня, не только это, но я собираюсь узнать больше об ОС на основе Debian.

Вопросы

  1. Я хотел бы знать, как обновить PHP 5.3 до PHP 5.4.7, скомпилировав его из исходников самостоятельно, без использования стороннего PPA.
  2. Является ли способ (объясненный ниже) правильным способом настройки PHP 5.4? Я новичок в компиляции из исходников.

Настроить

Я запускаю 64-разрядную версию Ubuntu Server 12.04. Сейчас у меня есть:

Эта проблема

Я изначально установил PHP 5.3, используя apt-get. Теперь я хочу перейти на PHP 5.4 из-за преимуществ трейтов в ООП, структуры с массивами и всех других недавних патчей и тому подобного.

Возможные решения

Я видел этот репозиторий ondrej / ppa, который я отказываюсь использовать, учитывая тот факт, что он может работать, но это неизвестный / ненадежный источник. Кроме того, я не учусь администрировать из исходного кода, используя настроить, делать и установить соответственно.

Я видел решение, компилируемое из исходников, которое по сути как я надеялся сделать это под руководством.

Вывод

Я не ожидал, что меня будут кормить с ложечки, я пошел и немного почитал вручную и, по крайней мере, сам начал катить мяч; вот как далеко я продвинулся.

Первое, что я сделал, это su в root (чтобы не набирать sudo все время).

$ sudo su

Следующее, что я сделал, - это загрузил последнюю версию PHP (5.4.7) и извлек ее содержимое, готовое для настройки перед установкой.

$ mkdir php5-new && cd !$
$ wget -O php-5.4.7.tar.bz2 http://php.net/get/php-5.4.7.tar.bz2/from/uk3.php.net/mirror
$ bzip2 -d php-5.4.7.tar.bz2
$ tar xvf php-5.4.7.tar.gz
$ cd php-5.4.7
$ ./configure --help

В конце концов, я решил провести bash, просмотрел список вариантов и решил, что мне нужно перечислить ВСЕ из вещей я разыскивается включить в конфигурацию.

$ ./configure --with-mysql --with-apache2 --with-libxml --with-openssl --with-zlib --with-bz2 --with-curl --with-dom --with-gd --with-imap --with-imap-ssl --with-mcrypt --with-mysqli --with-pdo-mysql --with-libxml --enable-ftp --enable-mbstring --enable-soap

Наконец, результаты ...

Когда процесс настройки закончился, он выдал ошибку:

configure: error: xml2-config не найден. Пожалуйста, проверьте вашу установку libxml2.


Прогресс обновления (решение)

Принятый ответ оказывается решением. Для тех, кто может столкнуться с этим вопросом в будущем, я добавлю несколько дополнительных советов (расширяющих то, что «Ладададада» изложено ниже).

Я столкнулся с другой проблемой с OpenSSL, поэтому мне пришлось установить библиотеки разработки; Я сделал это с помощью:

$ apt-cache search openssl | grep dev
$ apt-get install libssl-dev
$ dpkg -L openssl

Затем я установил --with-openssl=/usr/includes/openssl который стонал о evp.h. Я попытался найти этот файл с помощью find / -type f -name evp.h и обнаружил это внутри /usr/includes/openssl/evp.h каталог и поэтому я снова удалил =/usr/includes/openssl.

Вероятно, вам потребуется установить libxml2-dev через apt-get install libxml2-dev а затем попробуйте еще раз. Это установит все файлы заголовков и другие инструменты разработки для этой библиотеки. Вполне возможно, что это необходимо и для других модулей.

Это одна из причин, по которой гораздо лучше установить из двоичных пакетов и не загромождать вашу производственную систему этими ненужными пакетами. Кроме того, чтобы научиться компилировать свои собственные двоичные файлы, вам не следует использовать производственную систему.

Кажется, у тебя есть --with-libxml дважды в строке конфигурации. Наверное, не имеет значения, но лишний лучше убрать.

Кроме того, у вас установлена ​​libxml2? Вам это понадобится. если ты делать он установлен, где он? Если это не под /usr/lib/ (скажем, это под /opt/ вместо этого), тогда вам нужно будет указать путь к нему, используя --with-libxml=/path/to/libxml2.

Важно полностью удалить старую версию PHP, используя apt-get purge прежде чем пытаться скомпилировать свою версию. Неспособность сделать это часто приводит к тому, что в вашей системе остаются две разные версии PHP по двум разным путям и возникают некоторые проблемы, которые трудно отлаживать. Также хорошей практикой является создание .deb вашего скомпилированного PHP и его установка, даже если это только для одной системы и вы не собираетесь беспокоиться о зависимостях, просто потому, что это значительно упрощает удаление его позже. Удаление подобного скомпилированного пакета требует примерно тех же усилий, что и создание .deb, так что вы можете это сделать.

Убедитесь, что вы также понимаете различия между версиями PHP для CLI, CGI и Apache-module. В дистрибутивах на основе Debian все они имеют отдельные php.ini файлы. Убедитесь, что вы удалили все из них и скомпилировали тот, который соответствует тому, как вы используете PHP.