Erreur fopen [Résolu]

MasterOfQuebec 66 Messages postés lundi 12 mars 2007Date d'inscription 5 mai 2009 Dernière intervention - 29 avril 2007 à 21:51 - Dernière réponse : MasterOfQuebec 66 Messages postés lundi 12 mars 2007Date d'inscription 5 mai 2009 Dernière intervention
- 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.
Afficher la suite 

8 réponses

Répondre au sujet
MasterOfQuebec 66 Messages postés lundi 12 mars 2007Date d'inscription 5 mai 2009 Dernière intervention - 1 mai 2007 à 18:02
+3
Utile
Alors j'ai trouvé mon problème, je vais publier le script sur le site dans 8 heures.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de MasterOfQuebec
MasterOfQuebec 66 Messages postés lundi 12 mars 2007Date d'inscription 5 mai 2009 Dernière intervention - 29 avril 2007 à 22:13
0
Utile
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.
Commenter la réponse de MasterOfQuebec
JulSoft 354 Messages postés dimanche 3 juin 2001Date d'inscription 11 mars 2013 Dernière intervention - 30 avril 2007 à 00:03
0
Utile
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!!!
Commenter la réponse de JulSoft
MasterOfQuebec 66 Messages postés lundi 12 mars 2007Date d'inscription 5 mai 2009 Dernière intervention - 30 avril 2007 à 00:25
0
Utile
Mais y à t'il une façon que je puisse y écrire? (C:\nightshadowfiles\ est mon fichier www)
Commenter la réponse de MasterOfQuebec
cs_Astalavista 194 Messages postés lundi 24 décembre 2001Date d'inscription 3 février 2010 Dernière intervention - 30 avril 2007 à 02:05
0
Utile
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
Commenter la réponse de cs_Astalavista
neigedhiver 2492 Messages postés jeudi 30 novembre 2006Date d'inscription 14 janvier 2011 Dernière intervention - 30 avril 2007 à 18:00
0
Utile
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 )
Commenter la réponse de neigedhiver
MasterOfQuebec 66 Messages postés lundi 12 mars 2007Date d'inscription 5 mai 2009 Dernière intervention - 1 mai 2007 à 14:10
0
Utile
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";


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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.