WRInaute discret
Bonjour à tous,
En cherchant ici-même, je suis tombé sur un petit script php pour créer un sitemap. En essayant de l'adapter à mon site, je me rend compte qu'il manque quelque chose... voici le fichier sitemap.php :
Et en consultant example.com/sitemap.php, je tombe sur le beau message d'erreur :
Pourriez-vous me donner un coup de main afin de faire fonctionner tout cela ? :wink:
Merci.
En cherchant ici-même, je suis tombé sur un petit script php pour créer un sitemap. En essayant de l'adapter à mon site, je me rend compte qu'il manque quelque chose... voici le fichier sitemap.php :
PHP:
<span class="syntaxhtml"><br /><span class="syntaxdefault"><?php<br />set_time_limit</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxcomment">// Chemin relatif où seront écrits les sitemaps, sans extension<br />// ci dessous, dans le cas où le sitemap est à la racine et ce fichier dans un dossier comme /admin/<br /></span><span class="syntaxdefault">$sm</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"../"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">$root</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"http://www.example.com/"</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> </span><span class="syntaxcomment">// Site web sans "/" à la fin<br /><br />// Configuration de la connexion à la base de données<br /></span><span class="syntaxdefault">$host</span><span class="syntaxkeyword">=</span><span class="syntaxstring">""</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">$base</span><span class="syntaxkeyword">=</span><span class="syntaxstring">""</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">$user</span><span class="syntaxkeyword">=</span><span class="syntaxstring">""</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">$password</span><span class="syntaxkeyword">=</span><span class="syntaxstring">""</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxcomment">// Initialisation des compteurs<br /></span><span class="syntaxdefault">$a</span><span class="syntaxkeyword">=</span><span class="syntaxstring">""</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> </span><span class="syntaxcomment">// La chaîne contenant les <url></url><br /></span><span class="syntaxdefault">$pp</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">$u</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxcomment">// Pages statiques si nécessaire<br />//$r=array( // Ce tableau contient les URLs statiques<br />//"/page.html",<br />//"/andre/"<br />//);<br /><br /></span><span class="syntaxdefault">foreach </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$r as $v</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">$a</span><span class="syntaxkeyword">.=</span><span class="syntaxstring">"<br /><url>\r\n<br /><loc>"</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$root</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$v</span><span class="syntaxkeyword">.</span><span class="syntaxstring">"</loc>\r\n<br /><priority>0.9</priority>\r\n<br /><changefreq>hourly</changefreq>\r\n<br /></url>\r\n<br />"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">$u</span><span class="syntaxkeyword">++;<br /></span><span class="syntaxdefault">if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$u</span><span class="syntaxkeyword">%</span><span class="syntaxdefault">30000</span><span class="syntaxkeyword">==</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{</span><span class="syntaxdefault">ze</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$a</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$pp</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$sm</span><span class="syntaxkeyword">);}<br />}<br /><br /></span><span class="syntaxcomment">// Pages dynamiques<br /></span><span class="syntaxdefault">$e</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"select ar_urlp from articles where ar_suite in (0,1)"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">$link</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">mysql_connect</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$host</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$user</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$password</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">mysql_select_db</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$base</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$link</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">$query</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">mysql_query</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$e</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$link</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">mysql_close</span><span class="syntaxkeyword">();<br /></span><span class="syntaxdefault">echo mysql_error</span><span class="syntaxkeyword">();<br /></span><span class="syntaxdefault">while </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$aa</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">mysql_fetch_row</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$query</span><span class="syntaxkeyword">))</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxcomment">// Pour chaque page, on construit l'url selon nos propres critères<br /></span><span class="syntaxdefault">$url </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $aa</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">];</span><span class="syntaxdefault"> <br />if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">substr</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$url</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> 0</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> 4</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword"><></span><span class="syntaxdefault"> </span><span class="syntaxstring">"http"</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{</span><span class="syntaxdefault">$new_url </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">"http://www.example.com/"</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">.</span><span class="syntaxdefault">rtrim</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">substr</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$url</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">3</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">250</span><span class="syntaxkeyword">));}</span><span class="syntaxdefault">else </span><span class="syntaxkeyword">{</span><span class="syntaxdefault">$new_url </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $url</span><span class="syntaxkeyword">;}<br /></span><span class="syntaxcomment">//<br /></span><span class="syntaxdefault">$a</span><span class="syntaxkeyword">.=</span><span class="syntaxstring">"<br /><url>\r\n<br /><loc>"</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$new_url</span><span class="syntaxkeyword">.</span><span class="syntaxstring">"</loc>\r\n<br /><priority>0.8</priority>\r\n<br /><changefreq>daily</changefreq>\r\n<br /></url>\r\n<br />"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">$u</span><span class="syntaxkeyword">++;<br /></span><span class="syntaxdefault">if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$u</span><span class="syntaxkeyword">%</span><span class="syntaxdefault">30000</span><span class="syntaxkeyword">==</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{</span><span class="syntaxdefault">ze</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$a</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$pp</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$sm</span><span class="syntaxkeyword">);}<br />}<br /><br /></span><span class="syntaxcomment">// Si vous avez différents types d'url ou plusieurs bases etc..., reproduisez le paragraphe ci-dessus en l'adaptant<br /><br />//fin<br /></span><span class="syntaxdefault">ze</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$a</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$pp</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$sm</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">$a</span><span class="syntaxkeyword">=</span><span class="syntaxstring">""</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxcomment">// La fonction "ze" crée un fichier sitemap toutes les 30.000 URLs<br /></span><span class="syntaxdefault">function ze</span><span class="syntaxkeyword">(&</span><span class="syntaxdefault">$a</span><span class="syntaxkeyword">,&</span><span class="syntaxdefault">$pp</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$sm</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">$ax1</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<br /><urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\"<br />xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"<br />xsi:schemaLocation=\"https://www.google.com/schemas/sitemap/0.84<br />https://www.google.com/schemas/sitemap/0.84/sitemap.xsd\">\r\n<br />"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">$ax2</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"<br /></urlset>\r\n<br />"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">$xx</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">$ax1</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$a</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$ax2</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">$a</span><span class="syntaxkeyword">=</span><span class="syntaxstring">""</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">$aze</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">gzencode</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$xx</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">$fp</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">fopen</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$sm</span><span class="syntaxkeyword">.</span><span class="syntaxstring">"_"</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$pp</span><span class="syntaxkeyword">.</span><span class="syntaxstring">".gz"</span><span class="syntaxkeyword">,</span><span class="syntaxstring">"w"</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">fputs</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$fp</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$aze</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">fclose</span><span class="syntaxkeyword">();<br /><br /></span><span class="syntaxdefault">$fp</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">fopen</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$sm</span><span class="syntaxkeyword">.</span><span class="syntaxstring">"_"</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$pp</span><span class="syntaxkeyword">.</span><span class="syntaxstring">".xml"</span><span class="syntaxkeyword">,</span><span class="syntaxstring">"w"</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">fputs</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$fp</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$xx</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">fclose</span><span class="syntaxkeyword">();<br /><br /></span><span class="syntaxdefault">$pp</span><span class="syntaxkeyword">++;<br /><br />}<br /><br /></span><span class="syntaxdefault">$pl</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault">$xx</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<br /><sitemapindex xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\r\n<br />"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">while </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$pl</span><span class="syntaxkeyword"><</span><span class="syntaxdefault">$pp</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">$xx</span><span class="syntaxkeyword">.=</span><span class="syntaxstring">"<br /><sitemap>\r\n<br /><loc>"</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$root</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">str_replace</span><span class="syntaxkeyword">(</span><span class="syntaxstring">".."</span><span class="syntaxkeyword">,</span><span class="syntaxstring">""</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$sm</span><span class="syntaxkeyword">).</span><span class="syntaxstring">"_"</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$pl</span><span class="syntaxkeyword">.</span><span class="syntaxstring">".gz</loc>\r\n<br /></sitemap>\r\n<br />"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">$pl</span><span class="syntaxkeyword">++;<br />}<br /></span><span class="syntaxdefault">$xx</span><span class="syntaxkeyword">.=</span><span class="syntaxstring">"<br /></sitemapindex><br />"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">$fp</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">fopen</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$sm</span><span class="syntaxkeyword">.</span><span class="syntaxstring">".xml"</span><span class="syntaxkeyword">,</span><span class="syntaxstring">"w"</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">fputs</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$fp</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">$xx</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">fclose</span><span class="syntaxkeyword">();<br /></span><span class="syntaxdefault">?><br /></span></span>
Et en consultant example.com/sitemap.php, je tombe sur le beau message d'erreur :
Warning: Invalid argument supplied for foreach() in /home/web/example/sitemap.php on line 26
Warning: fopen(../_0.gz) [function.fopen]: failed to open stream: Permission denied in /home/web/example/sitemap.php on line 82
Warning: fputs(): supplied argument is not a valid stream resource in /home/web/example/sitemap.php on line 83
Warning: Wrong parameter count for fclose() in /home/web/example/sitemap.php on line 84
Warning: fopen(../_0.xml) [function.fopen]: failed to open stream: Permission denied in /home/web/example/sitemap.php on line 86
Warning: fputs(): supplied argument is not a valid stream resource in /home/web/example/sitemap.php on line 87
Warning: Wrong parameter count for fclose() in /home/web/example/sitemap.php on line 88
Warning: fopen(../.xml) [function.fopen]: failed to open stream: Permission denied in /home/web/example/sitemap.php on line 110
Warning: fputs(): supplied argument is not a valid stream resource in /home/web/example/sitemap.php on line 111
Warning: Wrong parameter count for fclose() in /home/web/example/sitemap.php on line 112
Pourriez-vous me donner un coup de main afin de faire fonctionner tout cela ? :wink:
Merci.