Erreur fopen

Résolu
MasterOfQuebec Messages postés 66 Date d'inscription lundi 12 mars 2007 Statut Membre Dernière intervention 5 mai 2009 - 29 avril 2007 à 21:51
MasterOfQuebec Messages postés 66 Date d'inscription lundi 12 mars 2007 Statut Membre Dernière intervention 5 mai 2009 - 1 mai 2007 à 18:02
Bonjour,
J'héberge un serveur sur mon ordinateur (avec WAMP5).

Voici un bout de script :


<hr />

$lenomdutxt = "C:\\nightshadowfiles\\download\\hosted\\$outype\";
$handle = "$destination_file.txt";
// Assurons nous que le fichier est accessible en écriture
if (is_writable($lenomdutxt)) {    // Dans notre exemple, nous ouvrons le fichier $lenomdutxt en mode d'ajout
    // Le pointeur de fichier est placé à la fin du fichier
    // c'est là que $somecontent sera placé
    if (!$handle = fopen($lenomdutxt, 'a')) {
         echo "Impossible d'ouvrir le fichier ($lenomdutxt)";
         exit;
    }

    // Ecrivons quelque chose dans notre fichier.
    if (fwrite($handle, $somecontent) === FALSE) {
       echo "Impossible d'écrire dans le fichier ($lenomdutxt)";
       exit;
    }
   
    echo "L'écriture de ($somecontent) dans le fichier ($lenomdutxt) a réussi";
   
    fclose($handle);

<hr />
Mais quand je vais sur la page j'ai cette erreur :
Warning : fopen(C:\nightshadowfiles\download\hosted\other\) [function.fopen]: failed to open stream: Permission denied in C:\nightshadowfiles\download\uploader.php on line 95
Impossible d'ouvrir le fichier (hosted\other\)

Variables :
$outype = un nom de fichier (défini plus heau).
$destination_file = un nom encodée (défini plus heau [exemple de nom: 1177875959questions.png.txt]).
$somecontent = Du texte (url) que je veut écrire dans le fichier txt (défini plus heau).

         Merci d'avance pour votre aide.

8 réponses

MasterOfQuebec Messages postés 66 Date d'inscription lundi 12 mars 2007 Statut Membre Dernière intervention 5 mai 2009
1 mai 2007 à 18:02
Alors j'ai trouvé mon problème, je vais publier le script sur le site dans 8 heures.
3
MasterOfQuebec Messages postés 66 Date d'inscription lundi 12 mars 2007 Statut Membre Dernière intervention 5 mai 2009
29 avril 2007 à 22:13
Je ne peut pas (ou je ne sais pas comment) éditer mon message alors je m'excuse pour le double poste.

En réalité ce que je veut faire avec le script php c'est créer un fichier .txt avec le nom: $destination_file
Dans le répétoire de mon serveur : C:\nightshadowfiles\download\hosted\$outype
Puis écrire une url dans le fichier texte. L'url dois être le chemin d'accès du fichier.
0
JulSoft Messages postés 354 Date d'inscription dimanche 3 juin 2001 Statut Membre Dernière intervention 11 mars 2013
30 avril 2007 à 00:03
C'est normal (et heureusement) que tu ne puisse pas écrire n'importe où sur ta machine. Sinon tu imagines la tête des hébergeurs qui veraient leurs ficheirs de configuretion réécrits par des petits malins... Bonjour les dégats!!!
0
MasterOfQuebec Messages postés 66 Date d'inscription lundi 12 mars 2007 Statut Membre Dernière intervention 5 mai 2009
30 avril 2007 à 00:25
Mais y à t'il une façon que je puisse y écrire? (C:\nightshadowfiles\ est mon fichier www)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Astalavista Messages postés 192 Date d'inscription lundi 24 décembre 2001 Statut Membre Dernière intervention 3 février 2010
30 avril 2007 à 02:05
Il y a surment moyen, mais il va faloir enlever des protections...
sinon, écrit le dans un dossier specifique dans ton site (protège le par un htaccess pour ton serveur uniquement pour ne pas avoir de personnes qui vienne farfouiller la dedans), puis execute un fichier .cmd avec la fonction exec, ou il y aura une commande dans le genre :
copy .\*.png.txt C:\nightshadowfiles\
del .\*.png.txt
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
30 avril 2007 à 18:00
Salut,

Quelle est l'utilité de cette ligne ?

$handle = "$destination_file.txt";

Puisque $handle est écrasé 2 lignes plus loin par :

if (!$handle = fopen($lenomdutxt, 'a')) {

Sinon, pour moi, ça :
$lenomdutxt = "C:\\nightshadowfiles\\download\\hosted\\$outype\";
c'est un chemin de répertoire, pas de fichier. Si c'est un fichier, il ne faut pas mettre de séparateur en fin de chaîne ( \ sur Win, / sur Linux )
0
MasterOfQuebec Messages postés 66 Date d'inscription lundi 12 mars 2007 Statut Membre Dernière intervention 5 mai 2009
1 mai 2007 à 14:10
Alors j'ai réusi en me basant sur plusieurs scripts.
Mais il y à toujours une erreur.

J'explique la première partie du script doit récupérer des donées sur un serveur shoutcast puis les mettres dans une variable
$song = le nom de la chanson
Puis quand la chanson est prise il crée un fichier txt avec le nom de la chanson. Exemple :
Chanson 1 - Artiste Bien.txt
Chanson 1 - Artiste Mal.txt

Mais il ne le fais pas il fais ceci :
.txt (il ne met pas de nom)

Pouvez-vous corriger mon script svp ?

<?php


// simple.php - shoutcast 7.html information display utility
// version 0.1.5


// To use this script, save this page save simple.php then edit the information below as noted, uncomment what you need
// To imbed the information on your php site use the include function on the page you wish to display the information




// Edit the next two lines with your server information
$host = "masterofquebec.ath.cx";
$port = "8000";


// Connect to server
[mailto:$fp=@fsockopen($host,$port,&$errno,&$errstr,10 $fp=@fsockopen($host,$port,&$errno,&$errstr,10]);
 if (!$fp) {
    echo "Erreur";
  } else {


// Get data from server
 fputs($fp,"GET /7 HTTP/1.1\nUser-Agent:Mozilla\n\n");


// exit if connection broken
for($i=0; $i<1; $i++) {
if(feof($fp)) break;
$fp_data=fread($fp,31337);
usleep(500000);
 }


// Strip useless junk from source data
$fp_data=ereg_replace("^.*","",$fp_data);
$fp_data=ereg_replace(".*","",$fp_data);


// Place values from source into variable names
list($current,$status,$peak,$max,$reported,$bit,$song) = explode(",", $fp_data, 7);


$trackpattern = "/^[0-9][0-9] /";
$trackreplace = "";
$song = preg_replace($trackpattern, $trackreplace, $song);


if ($status == "1") {
// To use any of the outputs below just uncomment (remove the double forward slashes) that line.
// Below is an example of all data available in the 7.html file made by the Shoutcast server
// **ON BY DEFAULT - COMMENT OUT (put to forwards slashes in front of it) TO HIDE


// echo "<html>\n<head>\n<title></title>\n</head>\n\nCurrent Listeners: $current
\nServer Status: $status
\nListener Peak: $peak
\nMaximum Listener: $max
\nReported Listeners: $reported
\nBroadcast Bitrate: $bit
\nCurrent Song: $song\n\n</html>";
// Below is a basic one line value of the current song, perfect for front pages of sites


    } else {
 } }


 


 


// the questions and the answers
$pool_question="Do you like copy and paste scripts?";
$pool_option[1]="Yes";
$pool_option[2]="No";


// If counter files are not available,they will be created
// You may remove next lines after the first use of the script
        if (!file_exists("$songg.txt")){
                // next two lines will not work if writing permissions are not available
                // you may create the files bellow manualy with "0" as their unique content
                file_put_contents ("$songg.txt",0);
                file_put_contents ("$songb.txt",0);
        }


// retrieve data saved in files
        $pool_responses[1]=file_get_contents("$songg.txt");
        $pool_responses[2]=file_get_contents("$songb.txt");




// if user votes, increase corresponding value
        if ($_POST["7680777"] and $_POST["7680777b"]==""){
                if ($_POST["7680777"]==1) {$pool_responses[1]++;file_put_contents("$songg.txt",$pool_responses[1]);}
                if ($_POST["7680777"]==2) {$pool_responses[2]++;file_put_contents("$songb.txt",$pool_responses[2]);}
        }


// get percentajes for each answer in the pool
        // get total number of answers
        $total_responses=$pool_responses[1]+$pool_responses[2];
        if ($total_responses==0){$total_responses=1;}  // to avoid errors at start
        // compute percentajes (with one decimal number)
        $pool_percentaje[1] = round((100*$pool_responses[1])/$total_responses,1);
        $pool_percentaje[2] = round((100*$pool_responses[2])/$total_responses,1);
                                                               
// print the form, which includes de answers and the percentajes
print "<center>\n";
print "<form method=post action=".$_SERVER["PHP_SELF"].">\n";
print "".$pool_question."\n";
print "\n\";
// answer 1
print \"----
\n\";
print \"  ".$pool_option[1].", \n\";
print \"".$pool_responses[1]." (".$pool_percentaje[1]."%), \n\";
print \"\n\";
// answer 2
print \"----
\n\";
print \"  ".$pool_option[2].", \n\";
print \"".$pool_responses[2]." (".$pool_percentaje[2]."%), \n\";
print \"\n\";
print "
\n";
// a simple control to avoid one user to vote several times
if ($_POST["7680777"]){
        print "\n";
}
print "\n";
print "</form>\n";
print "</center>\n";


?>
0
MasterOfQuebec Messages postés 66 Date d'inscription lundi 12 mars 2007 Statut Membre Dernière intervention 5 mai 2009
1 mai 2007 à 18:02
Alors j'ai trouvé mon problème, je vais publier le script sur le site dans 8 heures.
0
Rejoignez-nous