IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Pourquoi mon code ne fonctionne pas sur Linux


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Étudiant
    Inscrit en
    Juillet 2009
    Messages
    55
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2009
    Messages : 55
    Points : 43
    Points
    43
    Par défaut Pourquoi mon code ne fonctionne pas sur Linux
    Bonjour à tous,

    je suis actuellement en stage, j'ai développé un outil php/MySQL pour pouvoir importer des données dans une base et ensuite effectuer beaucoup de calculs statistiques sur ces mêmes données.

    Dans la page php des statistiques j'ai mis un iframe pour charger les statistiques correspondantes à la recherche demandée par l'utilisateur.

    Tout fonctionne parfaitement sur mon PC en local ,

    j'ai eu quelques bugs de mise en page mais je les ai corrigés (pb de chemin d'accès ...)

    Cependant aucun de mes graphiques conçus via Artichow ne fonctionne sur le serveur Linux

    J'ai testé des exemples pour être sûr que Artichow fonctionne sous Linux : pas de soucis, tous les exemples testés fonctionnent. J'ai ensuite testé mon code en "forçant" les données, ie au lieu de les transmettre via l'url je les ai imposés à la page et là mon camembert se construit bien ....
    J'ai donc vérifié ce qui était envoyé sur ma page puisque c'est sans doute de là que vient mon problème : ma page ne reçoit pas de array et je ne comprends pas pourquoi car sous Windows je n'ai aucun problème

    Je vous mets ci-dessous le code des mes pages :

    Le code pour mes stats : stats.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
    	<head>
    		<title>Liste des incidents graves et majeurs</title>
    		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    		<link rel="stylesheet" media="screen" type="text/css" href="../Design/design_stats.css" />
    	</head>
     
    	<body>
     
    		<?php
    		// Connexion à la base de données
    		mysql_connect("localhost", "root", "");
    		mysql_select_db("bdd_evenementsmajeurs_backbonerbci");		// On récupère l'année et le mois d'aujourd'hui
    		// Ce qui va permettre de sélectionner par défaut l'année d'affichage des résultats et aussi les critères de recherche
    		$aujourdhui = aujourdhui();
     
    		// Permet de savoir si on a fait la demande des statistiques que l'on souhaite afficher
    		if(isset($_GET['id']))
    		{
    			$id = $_GET['id'];
    			if($id == "index") { $pageStats = "stats_Globales.php"; }
    			elseif($id == "incidents") { $pageStats = "stats_Incidents.php"; $pageStatsSansPlusLourd = "stats_Incidents_ssPlusLourd.php"; }
    			elseif($id == "tps") { $pageStats = "stats_TPs.php"; $pageStatsSansPlusLourd = "stats_TPs_ssPlusLourd.php"; }
    			elseif($id == "autresIncidents") { $pageStats = "stats_AutresIncidents.php"; }
    		}
    		// Permet d'afficher les statistiques choisies par l'utilisateur
    		// Par défaut, on lui affiche les données de l'année en cours
    		if(isset($_POST['annee'])) {$recherche = 1;}
    		else {$recherche = 0;}
     
    		?>
     
    		<div id="container">
     
    			<div class="general">
     
    				<div class="entete">
    					<div class="logo"><img class="leLogo" src="../Images/logo_orange.gif" width="42" height="42"></div>
    					<?php menu($id); ?>
    				</div> <!-- entete -->
     
    				<?php echo recherche($id, $aujourdhui); ?>
     
    				<div class="corpsPage">
    				<?php
    				if($recherche == 1)
    				{
    					$annee = "&annee=".$_POST['annee'];
    					$periode = "&periode=".$_POST['periode'];
    					echo "<iframe height=\"600px\" width=\"1000px\" src='".$pageStats."?recherche=". $recherche . $annee . $periode ."'></iframe>";
    					if($id != "index" AND $id != "autresIncidents")
    					{
    						// On crée une nouvelle fenêtre imbriquée pour mettre les mêmes diagrammes mais sans le + lourd incidents
    						echo "<iframe height=\"600px\" width=\"1000px\" src='".$pageStatsSansPlusLourd."?recherche=". $recherche . $annee . $periode ."'></iframe>";
    					}
    				}
    				else
    				{
    					echo "<iframe height=\"600px\" width=\"1000px\" src='".$pageStats."?recherche=". $recherche ."'></iframe>";
    					if($id != "index" AND $id != "autresIncidents")
    					{
    						// On crée une nouvelle fenêtre imbriquée pour mettre les mêmes diagrammes mais sans le + lourd incidents
    						echo "<iframe height=\"600px\" width=\"1000px\" src='".$pageStatsSansPlusLourd."?recherche=". $recherche ."'></iframe>";
    					}
    				}
    				?>
    				</div> 
     
     
    			</div> <!-- general -->
     
    			<div class="foot">
    				<div class="imageFT"><img src="../Images/logo_ft.gif" width="114" height="29" alt="Logo France telecom"></div>
    			</div>
     
    		</div> <!-- container -->
    		<?php
    		mysql_close(); // On n'oublie pas de fermer la connexion à MySQL
    		?>
     
    	</body>
    </html>
    Voici le code de stats_Incidents.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
    	<head>
    		<title>Liste des incidents graves et majeurs</title>
    		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    		<link rel="stylesheet" media="screen" type="text/css" href="../Design/design_stats_fenetre.css" />
    	</head>
     
    	<body>
     
    		<?php
    		// Connexion à la base de données
    		mysql_connect("localhost", "root", "");
    		mysql_select_db("bdd_evenementsmajeurs_backbonerbci");
     
     
    	// Fonctions :
     
     
    		// Fonction qui renvoie l'année et le mois en cours
    		function aujourdhui()
    		{
    			$anneeAuj = date("Y", time());
    			$periodeAuj = array("01-01", "12-31");
    			return array($anneeAuj, $periodeAuj);
    		}
     
    		// Fonction pour calculer un pourcentage
    		function cacul_pourcentage($nombre,$total,$pourcentage)
    		{ 
    			if ($total != 0)
    			{
    				$resultat = ($nombre/$total) * $pourcentage;
    				return round($resultat,1); // Arrondi la valeur
    			}
    			else
    			{
    				return "Pas de données";
    			}
    		} 
     
    		// Fonction qui permet de calculer le nombre de tickets dans la base
    		// ainsi que la somme total des impacts pondérés
    		function calcul_total($aujourdhui)
    		{
    			$nbInc = mysql_query("SELECT COUNT(*) Id_ticket FROM `incidents` WHERE Traite='OUI' AND (`Date_debut` BETWEEN '".$aujourdhui[0]."-".$aujourdhui[1][0]."' AND  '".$aujourdhui[0]."-".$aujourdhui[1][1]."')");
    			$impact = mysql_query("SELECT SUM(Impact_pondere) Impact_pondere FROM `incidents` WHERE Traite='OUI' AND (`Date_debut` BETWEEN '".$aujourdhui[0]."-".$aujourdhui[1][0]."' AND  '".$aujourdhui[0]."-".$aujourdhui[1][1]."')");
    			$totalInc = mysql_fetch_object($nbInc);
    			$totalImp = mysql_fetch_object($impact);
    			return $totalImp->Impact_pondere;
    		}
     
    		// Fonction qui fait les calculs nécessaires pour le diagramme
    		// représentant la distribution des impacts selon les fonctions réseaux touchées
    		function FctRes($aujourdhui)
    		{
    			$queryFctRes = "SELECT SUM(Impact_pondere) , Fonction_reseau FROM `incidents` WHERE Traite='OUI' AND (`Date_debut` BETWEEN '".$aujourdhui[0]."-".$aujourdhui[1][0]."' AND  '".$aujourdhui[0]."-".$aujourdhui[1][1]."') GROUP BY Fonction_reseau ORDER BY SUM(Impact_pondere) ASC";
    			$resultFctRes = mysql_query($queryFctRes) or die(mysql_error());
    			$i=0;
    			while($rowFctRes = mysql_fetch_array($resultFctRes))
    			{
    				$valuesFctRes[$i] = $rowFctRes['SUM(Impact_pondere)'];
    				$legendFctRes[$i] = $rowFctRes['Fonction_reseau']." : ".cacul_pourcentage($valuesFctRes[$i],calcul_total($aujourdhui),100)." %";
    				$i++;
    			}
    			if(empty($valuesFctRes))
    			{
    				echo "<p> Il n'y a pas de données pour cette période </p>";
    			}
    			else
    			{
    				echo "<img src='Diagrammes/camembert.php?values=".urlencode(serialize($valuesFctRes))."
    					   &legend=".urlencode(serialize($legendFctRes))."'
    					   alt='Mon graphique'/>";
    			}
    		}
     
    		// Fonction qui permet d'afficher les diagrammes
    		function afficherDiagrammes($aujourdhui)
    		{
    			$totalImp = calcul_total($aujourdhui);?>
     
    		<!-- On affiche le diagramme pour l'impact selon les fonctions réseaux touchées -->
    			<div id="FctRes">
    				<h2> <br/>Impacts selon les fonctions réseaux touchées </h2>
    				<?php echo FctRes($aujourdhui); ?>
    			</div>
    			<?php
    		}
     
    		// On récupère l'année et le mois d'aujourd'hui
    		// Ce qui va permettre de sélectionner par défaut l'année d'affichage des résultats et aussi les critères de recherche
    		$aujourdhui = aujourdhui();
    		?>
     
    		<div class="corpsPage">
    		<?php
     
    			// On vérifie si l'utilisateur a effectué une recherche ou NON
    			if($_GET['recherche'] == 0) // Pas de recherche, on affiche par défaut les statistiques de l'année en cours
    			{
    				afficherDiagrammes($aujourdhui);
    			}
    			else
    			{
    				list($debutPeriode, $finPeriode) = explode("|", $_GET['periode']);
    				$periode = array($debutPeriode, $finPeriode);
    				$aujourdhui = array($_GET['annee'], $periode);
    				afficherDiagrammes($aujourdhui);
    			}
     
    		?>
    		</div> <!-- corpsPage -->
     
    		<?php
    		mysql_close(); // On n'oublie pas de fermer la connexion à MySQL
    		?>
    	</body>
    </html>
    le code pour créer mon camembert camembert.php placé dans le dossier Diagrammes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    <?php
    // On vérifie que les données à afficher sur le graphique existent
       if(isset($_GET['values']) === FALSE) {
          exit;
       }
    	if(isset($_GET['legend']) === FALSE) {
          exit;
       }
    	if(isset($_GET['titre']) === FALSE) {
          exit;
       }
       // On récupère les valeurs à afficher sur le graphique dans $_GET['values'] et on les désérialize
       $data = @unserialize($_GET['values']);
       $dataLegend = @unserialize($_GET['legend']);
       $titre = $_GET['titre'];
     
       // On vérifie que les données passées en GET sont correctes
       if(is_array($data) === FALSE) {
          exit;
       }
    	if(is_array($dataLegend) === FALSE) {
          exit;
       }
     
    require_once('Artichow/Pie.class.php');
     
    $graph = new Graph(450, 280);
     
    $graph->shadow->setPosition(Shadow::RIGHT_BOTTOM);
    $graph->shadow->setSize(4);
     
    $graph->setBackgroundGradient(
    	new LinearGradient(
    		new Color(240, 240, 240, 0),
    		new White,
    		0
    	)
    );
     
    $genres = array($data);
     
    $pie = new Pie(array_values($data));
     
    $pie->setLabelPrecision(1);
     
    $pie->setLegend(array_values($dataLegend));
    $pie->legend->setPosition(1.45, .25);
     
    $pie->setCenter(.36, .58);
     
    $pie->setSize(.65, .65);
     
    $pie->set3D(5);
     
    $pie->title->set($titre);
    $pie->title->move(0, -40);
    $pie->title->setFont(new TuffyBold(14));
    $pie->title->setBackgroundColor(new White(50));
    $pie->title->setPadding(5, 5, 2, 2);
    $pie->title->border->setColor(new Black());
     
    $graph->add($pie);
     
    $graph->draw();
     
    ?>

    N'hésitez pas à me poser des questions ou me donner des pistes car j'ai besoin de résoudre mon problème.
    Merci de votre aide

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Je vois pas ma lde majuscule dans tes nom de fichiers. Es tu sure que toutes son scrupuleusement respéctée ?
    Sous windows la casse n'est pas prise en compte donc

    include Fichier.php équivaut à include fichier.php

    En revanche sous Linux ce n'est pas le cas. ton problème peut venir de là
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre du Club
    Étudiant
    Inscrit en
    Juillet 2009
    Messages
    55
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2009
    Messages : 55
    Points : 43
    Points
    43
    Par défaut
    En effet j'ai bien vérifié la casse de mes fichiers .php , ils sont tous en minuscule

    je referai une vérification quand même pour être sûr.


    Comme je le disais, j'ai l'impression que mon fichier camembert.php ne reçoit pas de array alors que sous Windows c'est bon

Discussions similaires

  1. [Déploiement] Pourquoi mon application ne fonctionne pas sur tous les postes ?
    Par Willthelegend dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 08/09/2008, 20h34
  2. Mon code ne fonctionne pas mais pourquoi ?
    Par veriecherie dans le forum ASP
    Réponses: 3
    Dernier message: 01/08/2008, 12h19
  3. pourquoi mon code ne fonctionne pas
    Par jmlb35 dans le forum VBA Access
    Réponses: 2
    Dernier message: 30/06/2008, 19h02
  4. Pourquoi mon frame ne fonctionne pas sur Safari 3.0.4?
    Par joecool2005 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 05/02/2008, 17h36
  5. [VBA-E] mon code ne marche pas sur un autre PC
    Par yannph dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/01/2006, 21h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo