Что делает опция конфигурации PHP "--prefix = PREFIX"? - PullRequest
6 голосов
/ 23 мая 2010

Я слышал, что установка опции --prefix=PREFIX при компиляции PHP на Linux позволит вам иметь более одной установки PHP одновременно без их столкновения. ( Я думаю, что по умолчанию, если это не установлено, /usr/local). Тем не менее, я не уверен, что именно он делает или какой хороший параметр использовать. Кроме того, я также слышал, что установка его на значение, отличное от значения по умолчанию, может затруднить установку некоторых расширений PHP.

./configure --prefix=PREFIX ...

Я только что понял, что для некоторых других опций, таких как --exec-prefix, может потребоваться установить значение /usr/local, поскольку они по умолчанию имеют значение --prefix. Это вызвало бы проблемы, если бы для префикса было установлено что-то вроде web/phpalt, потому что такие вещи, как --sbindir, установлены в `` --exec-prefix + /sbin`.

Directory and file names:
  --prefix=PREFIX         install architecture-independent files in PREFIX
                          [/usr/local]
  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
                          [same as prefix]
  --bindir=DIR            user executables in DIR [EPREFIX/bin]
  --sbindir=DIR           system admin executables in DIR [EPREFIX/sbin]
  --libexecdir=DIR        program executables in DIR [EPREFIX/libexec]
  --datadir=DIR           read-only architecture-independent data in DIR
                          [PREFIX/share]
  --sysconfdir=DIR        read-only single-machine data in DIR [PREFIX/etc]
  --sharedstatedir=DIR    modifiable architecture-independent data in DIR
                          [PREFIX/com]
  --localstatedir=DIR     modifiable single-machine data in DIR [PREFIX/var]
  --libdir=DIR            object code libraries in DIR [EPREFIX/lib]
  --includedir=DIR        C header files in DIR [PREFIX/include]
  --oldincludedir=DIR     C header files for non-gcc in DIR [/usr/include]
  --infodir=DIR           info documentation in DIR [PREFIX/info]
  --mandir=DIR            man documentation in DIR [PREFIX/man]
  --srcdir=DIR            find the sources in DIR [configure dir or ..]
  --program-prefix=PREFIX prepend PREFIX to installed program names
  --program-suffix=SUFFIX append SUFFIX to installed program names
  --program-transform-name=PROGRAM
                          run sed PROGRAM on installed program names

Исходя из того, что говорит PHP, кажется, что вы можете установить следующие параметры без каких-либо побочных эффектов.

./configure --prefix=/custom/path --exec-prefix=/usr/local

Однако это всего лишь предположение.

Ответы [ 3 ]

4 голосов
/ 23 мая 2010

Если вы хотите переключиться между 5.2 и 5.3, вам, вероятно, лучше скомпилировать Apache и PHP из исходного кода в специальные каталоги.

По сути, вы можете скомпилировать apache и php5.2 в какое-нибудь место, например / web / php52 (давая --prefix = / web / php52 до configure для apache и php. Затем сделайте то же самое для apache / php53 с префикс типа / web / php53

Вы могли бы даже запутаться и сделать что-то вроде символических ссылок различных конфигов между двумя установками Apache, чтобы сохранить согласованность (так что разница only заключается в том, что один работает 5.3, а другой 5.2)

Затем, когда вы хотите запустить сервер 5.2, вы просто говорите:

$ /web/php52/bin/apachectl start

и затем переключиться на 5,3

$ /web/php52/bin/apachectl stop
$ /web/php53/bin/apachectl start

У меня есть несколько (старых) доступных сценариев сборки , которые могут или не могут избавить вас от боли, если вы компилируете в Linux (в частности, в CentOS, но вы можете довольно легко заставить его работать на дистрибутив redhat тоже)

3 голосов
/ 23 мая 2010

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

Изменение этого параметра изменит место, где вы его устанавливаете, поэтому технически вы можете установить несколько копий ... но зачем вам это делать?тот?Это просто создаст головную боль для всего остального (ваш веб-сервер / cgi / cli)

В большинстве случаев путь будет /usr/local или /usr, что приведет к установке файлов в /usr/local/bin и / usr/ bin` соответственно.

2 голосов
/ 23 мая 2010

Хорошая настройка для , которую вы используете, - /usr/local.Упаковщик дистрибутивов должен использовать /usr, а независимые поставщики программного обеспечения должны использовать /opt/<appname>.

Этот путь используется в качестве основы для исполняемого файла CLI ($PREFIX/bin), библиотеки SAPI и расширений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...