L'objectif final est très simple. J'ai besoin de récupérer une ligne de texte dans un fichier texte, de l'analyser en quelques variables, puis d'afficher les variables dans les cellules d'un tableau dans une page Web. J'ai fait cela des dizaines de fois en utilisant mysql mais jamais un fichier de test. Le problème est que j'obtiens une entrée vide dans les cellules. Cependant, si je l'exécute à partir de la ligne de commande, les données s'affichent dans les cellules comme il se doit.
Dans mon dépannage, j'ai réduit les choses au strict minimum - juste une variable et une cellule. Si je code en dur la variable $mytest="15" ; cela fonctionne bien. Si je récupère la variable dans le fichier texte et que je la lis dans $mytest, la cellule s'affiche en blanc, alors qu'en ligne de commande, tout semble correct. J'ai même été jusqu'à définir une variable à 15 et à l'envoyer à un petit programme C via exec, puis j'ai défini mon $mytest comme étant égal à la valeur de retour, mais toujours rien.
<?php
$handle = fopen("/home/vm725d/vmbrr.v2.6.6.vticketQ.log", "r");
$line = fgets($handle);
// process the line read.
$fields = explode("|",$line);
// Get data from fields
$vticket = explode (":", $fields[0]);
//$vTicket=$vticket[1];
$vTicket="15";
$mytest=exec ('/opt/observium/html/custom/fixstring ' . $vTicket);
//$mytest=$vTicket;
print "$mytest";
fclose($handle);
?>
<html>
<body>
<CENTER><B>V-Ticket Test</b> </CENTER>
<TABLE>
<FORM METHOD="POST" name=modticket action=modticket.php>
<center><TABLE bgcolor="#258e8e" width=800 border=1>
<TR></TR<TR></TR>
<TR>
<TD bgcolor="#FFFF99">vTicket:</TD>
<TD width=24><input name="thing1" value="<?php print $mytest;?>"></TD>
</TR>
</table>
<input type=submit name=create_case value="Update">
</FORM>
</body>
</html>
Voici le code C du fixstring - rappelez-vous que je l'utilise juste comme un test.
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[300])
{
int length = 0;
length = strlen(argv[1]);
char NEW[length];
memset (NEW,0,length );
strcpy(NEW, argv[1]);
printf ("%s",NEW);
}
Lorsque je fixe ma variable $mytest à "15", la cellule de ma page Web affiche 15 pour le vTicket.
Lorsque je fixe ma variable à la valeur du fichier texte ou à la valeur de retour du programme C fixstring, elle affiche un blanc.
Cependant, voici ce que je vois lorsque j'exécute le php à partir de la ligne de commande dans cet exemple
[Root@obs-stl-01 custom]# php vtest1.php
<html>
<body>
<CENTER><B>V-Ticket Test</b> </CENTER>
<TABLE>
<FORM METHOD="POST" name=modticket action=modticket.php>
<center><TABLE bgcolor="#258e8e" width=800 border=1>
<TR></TR<TR></TR>
<TR>
<TD bgcolor="#FFFF99">vTicket:</TD>
<TD width=24><input name="thing1" value="15"></TD>
</TR>
</table>
<input type=submit name=create_case value="Update">
</FORM>
</body>
</html>
Pourtant la page montre un champ vide pour la cellule thing1
Je peux en fait capturer cette sortie et l'écrire dans test.html, puis faire pointer mon navigateur dessus et elle s'affiche correctement.
Je sais que j'ai raté quelque chose de vraiment stupide mais je suis mordu par le serpent sur ce coup. Toute aide serait appréciée.
Gracias.