ok sous php4 mais pas sous php5

Mammouth du PHP | 620 Messages

20 mai 2010, 08:50

Bonjour,
j'ai un soucis avec un script qui m'affiche les sorties ciné sur mon site.
si le serveur est configuré en php 4 le script fonction mais si il est en php5 j'ai cette erreur :
Warning: feof(): supplied argument is not a valid stream resource in /homepages/36/d329215578/htdocs/cinema.php on line 152
voilà le bout de script :
<?php
$site = "http://www.nord-cinema.com/rss.php";
$fp = @fopen($site,"r");
while(!feof($fp)) $raw .= @fgets($fp, 4096);
fclose($fp);
if( eregi("<item>(.*)</item>", $raw, $rawitems ) ) {
 $items = explode("<item>", $rawitems[0]);
 for( $i = 0; $i < count($items)-1; $i++ ) {
  eregi("<title>(.*)</title>",$items[$i+1], $title );
  eregi("<link>(.*)</link>",$items[$i+1], $url );
  eregi("<image>(.*)</image>",$items[$i+1], $image);
  eregi("<description>(.*)</description>",$items[$i+1], $description);
 $title[1]=utf8_encode($title[1]);
 $description[1]=utf8_encode($description[1]);
  echo "<div class='cinema'><a href=\"".$url[1]."\"><img width=\"100\" border=\"0\" src=\"".$image[1]."\" alt=\"".$title[1]."\" class=\"brd10pxgauche\"></a>";
  echo "<a href=\"".$url[1]."\">".$title[1]."</a><br/>".$description[1]."</div>";
 }
}
?>
Modifié en dernier par fabrice88250 le 20 mai 2010, 09:05, modifié 1 fois.

ViPHP
ViPHP | 1136 Messages

20 mai 2010, 08:59

Slt ,

tu as oublié de fermer / ouvrir les balises php au niveau du span ..

voilà ton code fonctionnel :
<?php
$site = "http://www.nord-cinema.com/rss.php";
$fp = fopen($site,"r");
?>
<span style="font-weight: bold">
       <?php 
       while(!feof($fp)) $raw .= @fgets($fp, 4096);
       ?>
</span>
<?php
fclose($fp);
if( eregi("<item>(.*)</item>", $raw, $rawitems ) ) {
 $items = explode("<item>", $rawitems[0]);
 for( $i = 0; $i < count($items)-1; $i++ ) {
  eregi("<title>(.*)</title>",$items[$i+1], $title );
  eregi("<link>(.*)</link>",$items[$i+1], $url );
  eregi("<image>(.*)</image>",$items[$i+1], $image);
  eregi("<description>(.*)</description>",$items[$i+1], $description);
 $title[1]=utf8_encode($title[1]);
 $description[1]=utf8_encode($description[1]);
  echo "<div class='cinema'><a href=\"".$url[1]."\"><img width=\"100\" border=\"0\" src=\"".$image[1]."\" alt=\"".$title[1]."\" class=\"brd10pxgauche\"></a>";
  echo "<a href=\"".$url[1]."\">".$title[1]."</a><br/>".$description[1]."</div>";
 }
}
?>


Résultat :

Image

Uploaded with ImageShack.us

Mammouth du PHP | 620 Messages

20 mai 2010, 09:07

Arf en fait je voulais mettre en gras la ligne dans le code afin de vous montrer l'endroit ou sa bug. la balise span n'avait pas lieu d'être. (je l'ai supprimé dans mon 1er poste)

mon probléme est toujours le même du coup, sous php 4 j'ai bien l'affichage mais pas sous php5 (message d'erreur)

ViPHP
ViPHP | 1136 Messages

20 mai 2010, 09:18

Ba je suis sous php5.3 ,

Et si ce n'est les maeesages m'indiquant que eregi() est obsoléte ( je te conseil de le remplacer par preg_match() :wink: ) , et bien , je n'ai aucune autre erreur ..

:?

Mammouth du PHP | 661 Messages

20 mai 2010, 09:19

as tu essayé de virer @ avant le fopen() ? pour voir si il ne déclenche pas une erreur lui aussi !?

EDIT : (la doc)
<?php
// if file can not be read or doesn't exist fopen function returns FALSE
$file = @fopen("no_such_file", "r");

// FALSE from fopen will issue warning and result in infinite loop here
while (!feof($file)) {
}

fclose($file);
?>

Mammouth du PHP | 620 Messages

20 mai 2010, 09:24

moi je suis sous PHP Version 5.2.13 mais je ne comprend pas pourquoi si je me remet en php4 le script fonctionne.
mon erreur est bien la suivante (en plus elle se repete indefiniment on dirait)
Warning: feof(): supplied argument is not a valid stream resource in /homepages/36/d329215578/htdocs/cinema.php on line 152

ViPHP
ViPHP | 5462 Messages

20 mai 2010, 10:18

surprime tout les @ et verifie que ta gestion des erreurs soit activé et au au niveau maximum
dans ton php.ini

Code : Tout sélectionner

display_errors = On error_reporting = E_ALL | E_STRICT
apres tu peux utilisé file_get_contents c'est plus simple, et d'ailleur pour parser ton html c'est déconseiller d'utiliser des expressions régulière, utilise DomDocument :wink:

Mammouth du PHP | 620 Messages

20 mai 2010, 11:09

je n'ai pas acces au php.ini je suis chez 1and1

en retirant les @ j'ai ces messages d'erreur :
Warning: fopen() [function.fopen]: URL file-access is disabled in the server configuration in /homepages/36/d329215578/htdocs/cinema.php on line 151

Warning: fopen(http://www.nord-cinema.com/rss.php) [function.fopen]: failed to open stream: no suitable wrapper could be found in /homepages/36/d329215578/htdocs/cinema.php on line 151

Warning: feof(): supplied argument is not a valid stream resource in /homepages/36/d329215578/htdocs/cinema.php on line 152

Warning: fgets(): supplied argument is not a valid stream resource in /homepages/36/d329215578/htdocs/cinema.php on line 152

ViPHP
ViPHP | 5462 Messages

20 mai 2010, 11:13

je n'ai pas acces au php.ini je suis chez 1and1
en haut de ton script tu fais
ini_set('display_errors', 1);
ini_set('error_reporting', E_ALL | E_STRICT);

voir mieux tu crées un .htaccess avec

Code : Tout sélectionner

php_flag display_errors on php_value error_reporting 32767

Mammouth du PHP | 620 Messages

20 mai 2010, 11:35

j'ai essayé avec le htacces et du coup plus dutout de site :
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, [email protected] and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.
Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.
en ajoutant les ligne au dessus de mon script j'ai maintenant ces erreurs....
Warning: feof(): supplied argument is not a valid stream resource in /homepages/36/d329215578/htdocs/cinema.php on line 155
Notice: Undefined variable: raw in /homepages/36/d329215578/htdocs/cinema.php on line 155
Warning: feof(): supplied argument is not a valid stream resource in /homepages/36/d329215578/htdocs/cinema.php on line 155
Bon je fais des effort pour passé en php5 mais quand on voit le nombre de probléme que l'on peut avoir c'est decouragant surtout quand lememe code fonctionne sous php4.... apparement qui peut le plus ne peut pas le moins en php ! :x

ViPHP
ViPHP | 1136 Messages

20 mai 2010, 11:39

Bon ,
d'apres le message d'erreur , c'est fopen qui ne renvoi pas une ressource valide ...

Peut être que ton hebergement , à mis l'option :

allow_url_fopen = 0

Ce qui t'interdit les destinations extérieures au serveur avec fopen ...

En local , sur ton poste , avec php5 ca fonctionne ?

http://www.php.documentation.givah.net/ ... -url-fopen

Ch.

ViPHP
ViPHP | 5462 Messages

20 mai 2010, 11:41

+1 stopher
URL file-access is disabled in the server configuration

ViPHP
ViPHP | 5462 Messages

20 mai 2010, 14:44

en php5 juste ça suffirai
$xml = simplexml_load_file('http://www.nord-cinema.com/rss.php');
	
foreach($xml->channel->item as $item)
{
    echo "<div class='cinema'><a href=\"{$item->url}\"><img width=\"100\" border=\"0\" src=\"{$item->image}\" alt=\"{$item->title}\" class=\"brd10pxgauche\"></a>";
    echo "<a href=\"{$item->url}\">{$item->title}</a><br/>{$item->description}</div>";
}