Atualizando o PHP da versão 5.3 para a 5.4.7

2

Rapidamente, por assim dizer, tenho notado este tópico, pesquisei e existem muitas soluções. No entanto, estas soluções não funcionam para mim, não apenas isso, mas estou pretendendo aprender mais sobre o sistema operacional baseado em Debian.

Perguntas

  1. Eu gostaria de saber como atualizar o PHP 5.3 para o PHP 5.4.7 compilando-o da fonte sem usar um PPA de terceiros.
  2. O caminho (explicado abaixo) é a maneira correta de configurar o PHP 5.4? Eu sou novo em compilar a partir da fonte.

Configuração

Eu corro o Ubuntu Server 12.04 64-bit. Eu tenho atualmente:

  • PHP 5.3
  • MySQL-Server
  • Apache2
  • Memcached

O problema

Inicialmente instalei o PHP 5.3 usando apt-get . Eu agora gostaria de atualizar para o PHP 5.4 devido à vantagem de traços em OOP e a estrutura com arrays e todos os outros patches recentes e tal.

Soluções possíveis

Eu vi esse repositório ondrej / ppa, que eu me recuso a usar, dado o fato de que ele pode funcionar, mas é uma fonte desconhecida / não confiável. Além disso, não estou aprendendo como administrar a partir do código-fonte, usando configure , make e instalação de acordo.

Eu vi uma solução compilando a partir do código-fonte, que é essencialmente como eu esperava abordar isso com alguma orientação .

Conclusão

Eu não esperava apenas ser alimentado com uma colher e saí e fiz algumas leituras manuais e, pelo menos, comecei a rolar a bola; isso é o quão longe eu tenho.

A primeira coisa que fiz foi su na raiz (para salvar o sudo de digitar todo o maldito tempo).

$ sudo su

A próxima coisa que fiz foi baixar a última versão do PHP (5.4.7) e extrair seu conteúdo pronto para ser configurado antes de instalá-lo.

$ 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

Por fim, decidi fazer um bash, examinei a lista de opções e decidi listar ALL das coisas que queria incluir na configuração.

$ ./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

Finalmente, os resultados ...

Quando o processo de configuração terminou, ocorreu um erro:

configure: error: xml2-config not found. Please check your libxml2 installation.

Atualização do progresso (solução)

A resposta aceita acaba sendo a solução. Para qualquer um que possa se deparar com essa questão no futuro, adicionarei algumas dicas adicionais (estendendo o que "Ladadadada" declarou abaixo).

Eu esbarrei em outro problema com o OpenSSL, então eu tive que instalar as bibliotecas dev; Eu fiz isso usando:

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

Então eu defino --with-openssl=/usr/includes/openssl , que gemia sobre um evp.h . Eu tentei localizar esse arquivo usando find / -type f -name evp.h e descobri-lo dentro do diretório /usr/includes/openssl/evp.h e, portanto, novamente removi =/usr/includes/openssl .

    
por ash 25.09.2012 / 16:57

2 respostas

2

Você provavelmente precisará instalar libxml2-dev via apt-get install libxml2-dev e, em seguida, tentar novamente. Isto irá instalar todos os arquivos de cabeçalho e outras ferramentas de desenvolvimento para esta biblioteca. É bem possível que isso seja necessário para outros módulos também.

Esta é uma das razões pelas quais é uma idéia muito melhor instalar a partir de pacotes binários e não confundir seu sistema de produção com esses pacotes desnecessários. Além disso, para aprender a compilar seus próprios binários, você não deve usar um sistema de produção.

    
por 25.09.2012 / 17:16
1

Você parece ter --with-libxml duas vezes na sua linha de configuração. Provavelmente não importa, mas é melhor remover o extra.

Além disso, você tem o libxml2 instalado? Você precisará disso. Se você fizer tê-lo instalado, onde está? Se não estiver em /usr/lib/ (digamos, está em /opt/ ), será necessário especificar o caminho para ele usando --with-libxml=/path/to/libxml2 .

É importante remover completamente a versão antiga do PHP usando apt-get purge antes de tentar compilar sua própria versão. Não fazer isso geralmente acaba deixando duas versões diferentes do PHP em seu sistema sob dois caminhos diferentes e alguns problemas difíceis de depurar. Também é uma boa prática construir um .deb de seu PHP compilado e instalá-lo, mesmo que seja apenas para um único sistema e você não se importe com dependências, simplesmente porque isso torna a desinstalação mais tarde muito mais fácil. Desinstalar um pacote compilado como este é quase o mesmo esforço que construir um .deb, assim você pode fazê-lo.

Certifique-se de entender também as diferenças entre as versões CLI, CGI e módulo-Apache do PHP. Com distribuições baseadas no Debian, todas elas possuem arquivos php.ini separados. Certifique-se de desinstalar todos eles e compilar o correto para como você está executando o PHP.

    
por 25.09.2012 / 17:18

Tags