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

Заменить PHP, установленный через диспетчер пакетов, на самокомпилированную версию

На Ubuntu 10.10 vm я установил PHP 5.3 через диспетчер пакетов (установил весь стек ламп через tasksel install lamp) для быстрого тестирования какого-либо проекта.

Теперь мне нужна более новая версия PHP 5.4 beta, собранная из исходников. Я скачал исходники, скомпилировал и установил через configure --prefix=/usr && sudo make install

Это сработало для версии cli, в которой сейчас используется двоичный файл PHP 5.4, но, как я ожидал, он не заменил версию, которую использует apache, поэтому apache по-прежнему использует PHP 5.3.

Как я могу узнать, как tasksel установленная версия была скомпилирована / что мне нужно сделать, чтобы также обновить версию PHP, используемую с apache?

Если версия, предоставленная Ubuntu, все еще используется Apache, такая php-страница должна предоставить вам параметры сборки:

<?php
phpinfo();
?>

При сборке из исходников я редко предоставляю свой собственный префикс, поскольку префиксы по умолчанию /usr/local или что-то еще, что обычно позволяет легко отличить, что это скомпилированный вручную пакет. Это также находится раньше в пути, поэтому, если вы вручную скомпилировали что-то, что также предоставляет диспетчер пакетов, предпочтительнее будет скомпилированная вручную программа, если не указан полный путь. Если я предоставлю префикс, вероятно, /opt.

После сборки и установки php вам необходимо перезапустить Apache, чтобы он загрузил новую версию библиотеки.

Пакеты, предоставляемые Ubuntu, добавят два файла для настройки Apache для использования php:

/etc/apache2/mods-available/php5.load
/etc/apache2/mods-available/php5.conf

+ символическая ссылка на эти файлы, размещенные в /etc/apache2/mods-enabled. Apache, в свою очередь, загрузит все файлы в mods-enabled. Если сценарий установки не создает эти файлы конфигурации за вас, вам нужно сделать это вручную.

Вероятно, вам следует удалить старые пакеты перед использованием новой версии, чтобы избежать путаницы в том, какая версия используется.