PHP 5.3.1 Símbolo indefinido: error OnUpdateLong en el inicio de Apache

9

Estoy ejecutando Ubuntu 8.04 en este servidor. Tenía PHP 5.2 instalado a través del administrador de paquetes. Lo eliminé para instalar PHP 5.3.1 a mano. Construí los paquetes así

./configure --prefix=/opt/php --with-mysql --with-curl=/usr/bin --with-apxs2=/usr/bin/apxs2
make
make install

Esto instaló PHP 5.3.1 en / opt / php /

$ php -v
PHP 5.3.1 (cli) (built: Dec  7 2009 10:51:14) 
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies

Sin embargo, cuando intento iniciar Apache me sale esto.

 # /etc/init.d/apache2 restart
 * Restarting web server apache2       
  apache2: Syntax error on line 185 of /etc/apache2/apache2.conf: 
  Syntax error on line 1 of /etc/apache2/mods-enabled/php5.load: 
  Cannot load /usr/lib/apache2/modules/libphp5.so into server: 
  /usr/lib/apache2/modules/libphp5.so: undefined symbol: OnUpdateLong
                                                                     [fail]

¿Alguna idea de lo que está causando este error? Todas las referencias que puedo ver tienen que ver con la construcción de paquetes php5 para php4 o similares. PHP4 nunca se ha instalado en esta máquina.

baudtack
fuente

Respuestas:

11

en realidad, lo que dijo James Hackett fue más o menos lo que funcionó para mí.

Mi problema fue que construí PHP antes de instalar Apache (construí PHP desde la última troncal e instalé Apache2 a través de APT).

Entonces, cuando encontré el error de que apache encontró un símbolo indefinido (el módulo que no se encuentra es arbitrario por cierto), hice lo siguiente:

  1. make distclean en la fuente php
  2. ./configure --prefix=/usr/local/php-5.3-svn --with-apxs2=/usr/bin/apxs2
  3. make && make install

y todo funcionó bien.

El capitán obvio se estaba escondiendo de mí, por supuesto, ya que si solo rehaces sin hacer distclean && configure, make solo compila los nuevos símbolos que obviamente no son suficientes ;-)

Estructurado
fuente
3

Tuve este mismo problema y lo que hice fue eliminar mi directorio fuente de php, volver a extraer el tarball y luego compilar nuevamente y todo funcionó bien.

Anteriormente instalé php en este sistema sin apache y luego intenté reinstalar php desde el mismo directorio de origen con diferentes configuraciones.

James Hackett
fuente
1

Construiste php5 pero no reconstruiste el pegamento entre apache y php5. Como está utilizando mod_php5, falla (lógico).

Es posible que pueda ejecutar el script php gracias a fastcgi (supongo que su php 5.3.1 integrado a mano está bien), pero de todos modos le recomiendo que actúe de otra manera.

Es bastante desagradable construir un software a mano en un servidor de producción. Además, PHP5 es una gran pieza de software, realmente no debe hacerlo por motivos de mantenimiento y seguridad.

La forma correcta de lograr esto, si realmente necesita esa versión, es hacer una copia de seguridad del paquete. (sí, embalaje!)

Requiere un poco de conocimiento de empaque y tiempo. Puede obtener las fuentes de empaquetado con: apt-get source php5siempre que tenga una fuente deb-src en /etc/apt/sources.list

zecrazytux
fuente
No es un servidor de producción. Es solo nuestro servidor de desarrollo y estoy tratando de averiguar qué, si algo php 5.3 se romperá en nuestro sistema.
baudtack
1
"Es bastante desagradable construir un software a mano en un servidor de producción. Además, PHP5 es una gran pieza de software, realmente no debes hacer eso por motivos de mantenimiento y seguridad". En la mayoría de las distribuciones, es la única forma de mantenerse actualizado. Ubuntu, por ejemplo, solo tiene 5.2.10 como estable en sus repositorios, que se lanzó en junio de 2009. Personalmente, considero que es más riesgoso para la seguridad usar pre-paquetes porque tienen muchas cosas adicionales integradas que quizás no puedas necesita y puede desnudarse si los construye usted mismo. Además, puede mantenerse actualizado.
Andy Shellam
1

para aquellos de ustedes que experimentan el error zend_parse_paramater de apache2, mientras cargan libphp5.so:

/apache2.conf: error de sintaxis en la línea 1 de /etc/apache2/mods-enabled/php5.load: No se puede cargar /usr/lib/apache2/modules/libphp5.so en el servidor: / usr / lib / apache2 / modules / libphp5.so: símbolo indefinido: zend_parse_parameters

Eche un vistazo a la salida ./configure. si recibe un mensaje que dice algo similar a:

configure: advertencia: versiones de bison compatibles con la regeneración de los analizadores Zend / PHP: 1.28 1.35 1.75 1.875 2.0 2.1 2.2 2.3 2.4 2.4.1 (encontrado: ninguno).

intente instalar bison: sudo apt-get install bison

luego haga distclean luego ./configure ... luego haga luego make -i install

http://www.linuxforums.org/forum/redhat-fedora-linux-help/87975-configuring-php-work-apache.html


fuente
Solo debería ser necesario reconstruir los analizadores zend si ha modificado el código fuente PHP de alguna manera. Nunca instalé bison en ningún servidor de producción y nunca tuve un problema.
Andy Shellam
0

Como indicó @zecrazytux, ¿instaló los paquetes apache-dev apropiados? PHP bien podría haberse construido sin ellos, a pesar de que le dijiste dónde estaban. Debe mirar la salida ./configure.

staticsan
fuente