MàJ. (18/07/2010 à 1:07) le script refuse toujours de fonctionner sur mon mutualisé OVH (alors qu'il fonctionne parfaitement en local).
On est là : Détails du code et du problème (plus bas dans ce thread).
Toute aide est la bienvenue
justement si ils sont moindre autant utilisé simpleXML ton code sera réduis a 2 lignes, je comprend pas non plus pourquoi tu utilise curl ? un simple file_get_content fera la même choseBonjour stealth35 et merci pour ta réponse,
Mes besoins sont moindre ici et j'ai d'autre script qui "parsent" le xml de la même qui fonctionnent très bien. C'est la première fois que je rencontre ce problème et je ne parviens vraiment pas à en déterminer l'origine.
<?php
$dir = 'tw_cache/';
$fileName = 'latest.php';
$latest = $dir . $fileName;
$update = @filemtime($latest);
$udpateFreq = $update + 600; // en secondes
$target = 'http://twitter.com/statuses/user_timeline/783214.rss'; // source
$res = @simplexml_load_file($target);
if ((file_exists($latest)) && (time() < $udpateFreq)) // si le cache existe et n'est pas périmé
{
$fileContent = fopen($latest, 'r');
$latestTweet = fgets($fileContent);
fclose($fileContent);
echo $latestTweet;
}
elseif ($res) // sinon, si tweeter est up
{
$tweet = str_replace('twitter: ', '', $res->channel->item[0]->title);
$tweet = preg_replace('# ((?:https?|ftp)://\S+?)(?=[[:punct:]]?(?:\s|\Z)|\Z)#', ' <a href="$1">$1</a>', $tweet); // replacing url by link
$link = $res->channel->item[0]->link;
$date = date('d/m/Y à H:i', strtotime($res->channel->item[0]->pubDate));
$latestTweet = '<div id="latesttweet"><p>' . $tweet . '<br/>Posté le <a href="' . $link . '"><span class="date">' . $date . '</span></a></p></div>';
echo $latestTweet;
// si le repertoire de cache n'existe pas, on le cree
if (!is_dir($dir)) { mkdir($dir, 0705); }
// creation du fichier cache
$fileContent = fopen($latest, 'w+');
fputs($fileContent, $latestTweet);
fclose($fileContent);
}
else {
echo '<div id="latesttweet"><p>Tweet ! Tweet !</p></div>';
}
?>
Et les erreurs que j'obtiens :Warning: simplexml_load_file(http://twitter.com/statuses/user_timeline/783214.rss) [function.simplexml-load-file]: failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request in /homez.42/username/www/includes/latest-tweet.php on line 12
Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "http://twitter.com/statuses/user_timeline/783214.rss" in /homez.42/username/www/includes/latest-tweet.php on line 12
normalement un php_flag suffis dans ton .htaccessSalut et à nouveau, merci pour ta réponse.
Je suis chez OVH (en mutu) et je n'ai pas accès à php.ini, j'ai donc tapé un "SetEnv ALLOW_URL_FOPEN 1" dans un .htaccess mais le problème persiste
Code : Tout sélectionner
php_flag allow_url_fopen 1
essaye avec un ini_set, t'as quelle version de php ?L'ajout du flag fait quant à lui complètement plante l'hosting "(500) Internal Server Error".