Tengo un problema poco molesto, y se trata sobre el uso de la función eval().
Estoy haciendo una aplicación web que carga códigos que están en un respositorio de internet, accedido mediante un servicio web. El problema es que no puedo usar la función eval() para ejecutar dicho código porque me arroja un fatal error donde me dice que la función que estoy intentando usar es desconocida:
Cita:
¿Cómo así que la función header() no está definida?. Estoy trabajando (las pruebas) en un servicio local de Apache bajo windows: Apache/2.2.9 (Win32) mod_ssl/2.2.9 OpenSSL/0.9.8h PHP/5.2.6 con libmysql.dll activo y funcionando. Siempre me ha funcionado bien en todos los aspectos menos cuando utilizo eval() (esta no es la primera vez que me pasa ). Otros detalles técnicos son:Fatal error: Call to undefined function header() in C:\Archivos de programa\Apache Software Foundation\Apache2.2\htdocs\X_TMP_SRV_LOCAL_P\base \php\class.WSRC-Req.php(146) : eval()'d code on line 1
- El código a evaluar se guarda codificado en base64 en una variable dentro del mismo código. Cuando evalúo el código, obviamente decodifico antes de evaluar.
- El código a evaluar no tiene etiquetas php (<?php .. ?>), porque en definitiva no las necesita
- Hice pruebas montando exactamente el mismo código en otra variable y ejecutándolo, y me funcionó, pero cuando intento ejecutar el código recuperado desde el servicio web me arroja ese error absurdo.
- Lo probé en el servidor de internet, donde va a estar montado en definitiva, y tampoco funcionó, así que no debe afectar en que sea Windows, o un servicio local, o lo que sea, sino primero que todo en la implementación.
- Ya he probado escapando las comillas, comillas simples, signos "$", y nada que funciona.
Aquí les dejo el código de la implementación, y pues, el servicio web si es una caja negra, pero igualmente funciona, así que debe ser problema de alguna de estas líneas:
Código PHP:
// Después de varios requires propios del cliente del servicio web, envía una petición a éste y devuelve todo un paquete con códigos.
$paquete = $servC->EnviarPeticion();
// El código llega codificado en base64, así que lo decodifico.
$cod = base64_decode($paquete);
// Y pues, después de tanto probar, tengo que ver si es problema del código, pero es un código normal y natural de php, como cualquier otro
echo $cod;
// Y evalúo el código, pero me sale el error.
eval($cod);
// El código evaluado es: header('location: index');
Gracias por el tiempo, y si pueden ayudarme, no caería mal
Les envío la URL donde se encuentra la implementación del código, que debería evaluar OK y enviar a una página que no existe (index.php), o sea, que debería arrojar un error 404 si está bien, no debería aparecer ese Fatal Error:
http://74.220.207.157/~grupodsi/~productos/idem/base/php/class.WSRC-Req.php
NOTA:
- El array del principio es control, nada tiene que ver con el problema.
- La línea después del array es el código ya recuperado que hay que ejecutar, ¡y nunca se ejecuta!.
- El Fatal Error demuestra que no se ejecuta.
- Se ve más elegante en el código fuente.