Я быстро, так сказать, заметил эту тему, я искал и есть много решений. Однако эти решения не работают для меня, не только это, но я собираюсь узнать больше об ОС на основе Debian.
Я запускаю 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.