wsf/php

En el último taller se habló de problemas con la instalación de wsf en ubuntu/debian, les dejo una guía que a mi me sirvió en un lenny, squiz, ubuntu 10.(no me acuerdo) y un mint 13.

1- Instalar prerrequisitos desde apt-get

apt-get install php5 php5-dev php5-xsl build-essential libxml2-dev unzip libssl-dev pkg-config

2- Compilar y instalar Apache Axis2/C

cd /usr/src/local

si no existe crearlo

wget http://apache.mirror.aussiehq.net.au//ws/axis2/c/1_6_0/axis2c-src-1.6.0.tar.gz

tar -xzvf axis2c-src-1.6.0.tar.gz

cd axis2c-src-1.6.0

./configure --enable-libxml2

make

make install

3- Bajar y descomprimir los fuentes de WSF/PHP

cd /usr/src/local

wget http://dist.wso2.org/products/wsf/php/2.1.0/wso2-wsf-php-src-2.1.0.zip

unzip wso2-wsf-php-src-2.1.0.zip

cd wso2-wsf-php-src-2.1.0

4- Compilar y instalar WSF/PHP

cd /usr/src/local/wso2-wsf-php-src-2.1.0

env CPPFLAGS=“-I/usr/local/axis2c/include/axis2-1.6.0/” LDFLAGS=“-L/usr/local/axis2c/lib” ./configure

make

make install

5- Configurar PHP
Agregar el modulo de wsf a los módulos que corren con php.

echo “extension=wsf.so” > /etc/php5/conf.d/wso2.ini

Configurar para que las librerías de wsf sean accesibles en el include_path de php. Para esto editar el php.ini y agregar una línea que se cambie de:
include_path = “.:/usr/share/php”
y se transforme en:
include_path = “.:/usr/share/php;/usr/local/src/wso2-wsf-php-src-2.1.0/scripts”
6- Verificar

/etc/init.d/apache2 restart

Crear un archivo phpinfo.php y verificar que “Additional .ini files parsed” contiene “wso2.ini”. Chequear que las extensiones “wsf” y “xsl” esta instaladas.
Correr el siguiente test script:

<?php function greet($message) { $responsePayloadString = <<<XML Hello Client! XML; $returnMessage = new WSMessage($responsePayloadString); return $returnMessage; } $service = new WSService(array("operations" => array("greet"))); $service->reply(); ?>

Espero le sirva a alguien, saludos.

Hola!..

Me alegro que te halla funcionado… lo sacaste de mi blog (me doy cuenta por que dejaste un comentario que tambien decia “gaticaz”)!!.. me alegra mucho que algo que guarde en mi blog como investigación sobre los WS para en algún momento pasárselo a los usuarios … halla llegado a un usuario del SIU que lo necesitaba (aunque no había sido posteado en ningún sitio oficial del SIU) … la magia de internet… la magia de Google! … inclusive lo mejor de todo es que lo hallas compartido por tu cuenta en el foro!

Estaba por postear un nuevo thread ya que hay gente consultando sobre este mismo tema en el GdS, me ahorraste el trabajo de copiarlo y pegarlo :smiley:

Paso a invitar a otros miembros de la comunidad para que lean tu post… ya que también están interesados en la instalación de la librería WSF/PHP.

Saludos… y gracias por compartir… (y ahorrarme trabajo! :stuck_out_tongue: )

Buenos días! Estamos intentando hacer andar el portal de autogestión en un debian squeeze. Siguiendo estos pasos para instalar la libreria wsf, especificamente al instalar y compilar Apache Axis2/C nos da error . ¿Es necesario instalar Axis2? ¿Tienen WSf andando en un debian squezee?
Adjunto el error que da el portal cuando lo hacemos andar.
Desde ya muchas gracias!

Andrea


errordeportalautogestion.png

errordeportalautogestion.png

Hola Andrea,

Te cuento de que es fundamental instalar el axis2 es necesario para poder compilar la librería WSF .
Yo tengo varias instalaciones de WSF/PHP con Debian Squeeze.
Si me pasas el error que te tira la compilación de axis2 podríamos ver que sucede.

Al margen de esto los errores que se te muestran en pantalla parecieran que son de autogestión y no de la librería.

Creo que lo mejor es ir solucionando los problemas por pasos, comenzando poder compilar axis2 y la librería WSF/PHP.

Saludos.

Buen día Gustavo! Finalmente logramos instalar la libreria, y efectivamente son errores del portal que no tienen que ver con eso. Vamos a ver si lo solucionamos para poder hacerlo andar.
Muchas gracias!
Andrea

Gente… revisando este hilo me encontre con que tb tengo problemas al configurar el axis:

En el punto 2 cuando ejecuto # ./configure --enable-libxml2 viene bien hasta que salta el error que adjunto:

checking sys/appleapiopts.h usability… no
checking sys/appleapiopts.h presence… no
checking for sys/appleapiopts.h… no
checking whether to use archive… no
checking whether to build xpath… yes
checking whether to build guththila xml parser library… yes
checking whether to build libxml2 xml parser library… checking for pkg-config… no
yes
checking for LIBXML2… configure: error: The pkg-config script could not be found or is too old. Make sure it
is in your PATH or set the PKG_CONFIG environment variable to the full
path to pkg-config.

Alternatively, you may set the environment variables LIBXML2_CFLAGS
and LIBXML2_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

To get pkg-config, see http://pkg-config.freedesktop.org/.
See `config.log’ for more details.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Luego si quiero ejecutar el make and make install me salta esto:

make

make: *** No se especificó ningún objetivo y no se encontró ningún makefile. Alto.
#make install
make: *** No hay ninguna regla para construir el objetivo `install’. Alto.

Que podrá ser???

Hola!..

Te hago 1 consulta… y te tiro un a pista…

1- Que sistema operativo esta usando… Debian, Ubuntu?.. otro?
2- Por lo que interpreto de tu error, parece que no encuentra las librerias necesarias para compilar… especificamente las relacionadas con libxml2… proba hacer lo siguiente…

apt-get install libxml2-dev

Saludos!

Gustavo, el servidor tiene debian squeeze. Cuando quiero instalar el libxml2-dev me sale que ya esta instalado

libxml2-dev ya está en su versión más reciente.
0 actualizados, 0 se instalarán, 0 para eliminar y 48 no actualizados.

Ahora que recuerdo cuando comenzamos a instalar la libreria nos guiamos por esta guia https://sites.google.com/site/dbezborodov/programming/installing-wso2-wsf-for-php-on-debian, que es para debian squeeze, que ya trae el paquete libaxis2c. Vos en tu guia lo instalas manualmente? Será ese el problema???

Capaz me conviene desintalarlo e instalarlo manualmente como lo hiciste vos…

Gustavo, te cuento que hize un apt-get remove del libaxis2c y lo configure tal cual los pasos que aparecen en tu guia o sea lo instale manualmente. Modifique unos path en el webservice.ini yyyy salio andando :D. Ahora si me anda el getCaptcha

Me alegro que te este funcionando!

Hola estoy tratando de buscar el archivo wso2-wsf-php-src-2.1.0.zip.
Como en el wget de los dos tutoriales que se compartieron en el post no se encuentra el archivo.
Descargue algunos de descarga directa pero al parecer están dañados.
Alguien no tiene un backup de este zip para compartir.

Saludos.

Hola,

Te dejo dos links de los que utilizo yo:

Saludos!

Por si a alguien le sirve en Debian wheezy me tiraba un par de warnings,
Con el flag “-Werror” de C cualquier warning es tratado como un error y falla la compilación.

La solución (usar bajo su propio riesgo)
Dentro del directorio de los fuentes borrar todos los -Werror pasados como parametro a C
find -type f -name configure -exec sed -i ‘/CFLAGS/s/-Werror//g’ {} ;

Fuente
http://stackoverflow.com/questions/17513640/axis2-c-error-in-instalaltion

Con los archivos de Gustavo me funcionó el configure y el make.

Tuve que instalar primero el axis2c porque el WSF lo buscaba al final de la instalacón.

Al instalar el wsf me dió unos errores por usar un PHP 5.4, pero siguiendo esto lo arreglé:

https://jackson-brain.com/compiling-wso2-web-services-framework-for-php-5-5/

Igualmente directamente le dejé la parte del else porque no parecía funcionar la condición del if, y no la quise debugear, total ya sé que versión tengo.

También tuve que copiar el directorio .libs de wsf_c/axis2c/axiom/src/parser/guththila a wsf_c/axis2c/axiom/src/parser/libxml2 porque estaba buscando ahí el libaxis2_parser.so

Lo copio por si desaparece la web:


The WSO2 framework provides comprehensive WSS, WSI security for SOAP and REST based web services with bindings in multiple languages including Java, PHP, Python, C, Ruby and many more. Unfortunately if you are attempting to compile this library extension for PHP > 5.3, you are going to have a bad time.

The first error you will run into is
php zend_class_entry has no member named default_properties

The second error once you find a way around that one is
php struct_php_core_globals has no member named safe_mode
These are both due to changes made in PHP since 5.4, for “Safe Mode” specifically since the concept was deprecated in 5.3 and removed in 5.4, see PHP Safe Mode for more details.

The third error you may encounter is along the lines of
error CHECKUID_CHECK_FILE_AND_DIR undeclared
which is also due to deprecated/retired components of PHP.

Fortunately the fixes are few and easy, here are the patches:

src/wsf.c:

@@ -458,8 +458,12 @@
 
     ALLOC_HASHTABLE(intern->std.properties);
     zend_hash_init(intern->std.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
+#if PHP_VERSION_ID < 50399
     zend_hash_copy(intern->std.properties, &class_type->default_properties,
             (copy_ctor_func_t) zval_add_ref, (void *) & tmp, sizeof (void *));
+#else
+    object_properties_init((zend_object*) &(intern->std.properties), class_type);
+#endif
 
     retval.handle = zend_objects_store_put(intern,
             (zend_objects_store_dtor_t) zend_objects_destroy_object,

src/wsf_util.c:

@@ -1986,10 +1986,6 @@
 
 	if (VCWD_REALPATH(path, resolved_path_buff)) 
 	{
-		if (PG(safe_mode) && (!php_checkuid(resolved_path_buff, NULL, CHECKUID_CHECK_FILE_AND_DIR))) 
-		{
-			return NULL;
-		}
 
 		if (php_check_open_basedir(resolved_path_buff TSRMLS_CC)) 
 		{

You’ll notice that in wsf_util.c we simply removed that particular check because both functions/values no longer existed, there may be a better solution to this but for the moment we are able to compile. Rember to
make clean
then
./configure
make
sudo make install
and add the extension ini to /etc/php.d/

Me costó muchísimo instalar esto!! Todo el día pero al final lo logré… ahora, WSF dice que no es soportado por la comunidad hace muchos años y no es mantenida, por algo en particular se sigue usando?

Saludos.

Hola Jorge, te cuento que a partir de la versión 2.3.0 de SIU-Mapuche, se realizaron en REST los Servicios Web existentes en Mapuche. Por el momento ambas tecnologías van a estar disponibles en el sistema. Por el motivo que mencionas, se decidió migrar a la tecnología REST y de a poco abandonar la librería WSF.
Saludos, Nico