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