martes, 11 de junio de 2013

Errores solucionados de JpGraph y FPDF con PHP6.


    Es común que haya este tipo de errores cuando te encuentras programando o haciendo pruebas con nuevo  software (parte lógica de una computadora, que permite la interacción, para obtener un resultado u una respuesta), el problema esta en la función CheckPHPVersion del archivo jpgraph.php. en php 5.1.0 se usa la función split que evalúa "[/.-]". luego de 5.3 es discontinua su uso y hay que reemplazarla por explode que no evalúa eso, y lo toma literal (como lo menciona aquí agustín, de donde se obtuvo la solución ):

ERROR:

//
// Check minimum PHP version
//

function CheckPHPVersion($aMinVersion) {
    list($majorC, $minorC, $editC) = preg_split('/[\/.-]/', PHP_VERSION);
    list($majorR, $minorR, $editR) = preg_split('/[\/.-]/', $aMinVersion);

    if ($majorC != $majorR) return false;
    if ($majorC < $majorR) return false;
    // same major - check minor
    if ($minorC > $minorR) return true;
    if ($minorC < $minorR) return false;
    // and same minor
    if ($editC  >= $editR)  return true;
    return true;
}

 Para solucionar el problema primero se debe de cambiar lo anterior a algo similar a lo siguiente: 

//
// Check minimum PHP version
//
function CheckPHPVersion($aMinVersion) 
$actual = preg_replace("/[^0-9]/","", PHP_VERSION); 
$minima = preg_replace("/[^0-9]/","", $aMinVersion); 

return( $minima <= $actual ); 
}

y queda  solucionado el problema, no obstante si nos aparece el siguiente error:

Strict Standards: strftime() [function.strftime]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/Chicago' for '-5.0/DST' instead in \jpgraph\src\jpgraph.php on line 400.

lo que se debe hacer es colocar date_default_timezone_set();, antes de llamar a la librería de fpdf, es preciso colocar entre los paréntesis la  zona horaria que más aplique, para más información revisar PHP: date_default_timezone_set - Manual, es decir:


date_default_timezone_set(UTC);
include "fpdf/fpdf.php";

Ahora si aparece el siguiente error:

Fatal error: Call to undefined function get_magic_quotes_runtime() in ...\fpdf\fpdf.php on line 1054

Ésto se debería resolver,  según esta fuente,  cambiando lo que dice set_magic_quotes_runtime(0) y lo que contiene dentro de sus paréntesis cambiándolo por ini_set("magic_quotes_runtime", 0);, dónde lo que se encuentra en el interior de los paréntesis se colocará después de la coma, es decir:

ERROR:

Código 1 - PHP
1.    /* FUNCION QUE DARÁ ERRORES*/
2.     
3.    if (PHP_VERSION < 6) {
4.    $magic_quotes = get_magic_quotes_runtime();
5.    set_magic_quotes_runtime(0);
6.    }
7.    $file_buffer = file_get_contents($path);
8.    $file_buffer = $this->EncodeString($file_buffer, $encoding);
9.    fclose($fd);
10. if (PHP_VERSION < 6) { set_magic_quotes_runtime($magic_quotes); }
11. return $file_buffer;
12. }

SOLUCIÓN:

Código 2 - PHP
1.    /* NUEVA FUNCION CORRECTA */
2.     
3.    if (PHP_VERSION < 6) {
4.    $magic_quotes = get_magic_quotes_runtime();
5.    ini_set("magic_quotes_runtime", 0);
6.    }
7.    $file_buffer = file_get_contents($path);
8.    $file_buffer = $this->EncodeString($file_buffer, $encoding);
9.    fclose($fd);
10. if (PHP_VERSION < 6) { ini_set("magic_quotes_runtime", $magic_quotes); }
11. return $file_buffer;
12. }

Ahora bien, para terminar, si se presenta este error:


Se debe simplemente cambiar el nombre, como se muestra a continuación la solución obtenida de aquí, donde el error es lo que sigue:

$graph->Stroke("/img/grafica.png");
Y simplemente se debe quitar las diagonales “/” como sigue:

$graph->Stroke("grafica.png");

 Y el problema se habrá resuelto.

“Honor  a quien Honor merece” – Carlos Rodríguez:

Cada solución fue probada y obtenida de sus respectivos autores y páginas, espero les sea útil como lo ha sido conmigo.


Instalar Sublime Text en Fedora e instalarle el Package Control al Sublime Text

Instalar Sublime Text en Fedora  Saludos, alguna vez has utilizado Sublime Text?, Sublime Text  es un "Sofisticado editor de texto...