Ahoj,
prosím někoho, aby mi vysvětlil následující problém.)
V kódu chci zapisovat do text. souboru podle následujícího příkazu:
$fp=fopen("data/data.txt", "a");
ale při pokusu o uložení mi to píše následující:
Warning: fopen(data/data.txt): failed to open stream: Permission denied in D:\www\pes\armyburzacz\www\__PHP\include\shared.inc.php on line 369
Error opening data file.
Warning: fputs(): supplied argument is not a valid stream resource in D:\www\pes\armyburzacz\www\__PHP\include\shared.inc.php on line 377
Warning: fclose(): supplied argument is not a valid stream resource in D:\www\pes\armyburzacz\www\__PHP\include\shared.inc.php on line 379
Warning: Cannot modify header information - headers already sent by (output started at D:\www\pes\armyburzacz\www\__PHP\include\shared.inc.php:369) in D:\www\pes\armyburzacz\www\__PHP\include\shared.inc.php on line 648
Warning: fopen(data/logauthors.txt): failed to open stream: Permission denied in D:\www\pes\armyburzacz\www\__PHP\include\shared.inc.php on line 640
Warning: fwrite(): supplied argument is not a valid stream resource in D:\www\pes\armyburzacz\www\__PHP\include\shared.inc.php on line 642
Warning: fclose(): supplied argument is not a valid stream resource in D:\www\pes\armyburzacz\www\__PHP\include\shared.inc.php on line 643
Může mi někdo na základě výše uvedených indícií pomoci?
Děkuji předem
>Warning: fopen(data/data.txt): failed to open stream: Permission denied in D:\www\pes\armyburzacz\www\__PHP\include\shared.inc.php on line 369
Error opening data file.
nemáš práva otevřít -> error
Warning: fputs(): supplied argument is not a valid stream resource in D:\www\pes\armyburzacz\www\__PHP\include\shared.inc.php on line 377
nemáš práva otevřít -> nemáš práva editovat -> error2
Warning: fclose(): supplied argument is not a valid stream resource in D:\www\pes\armyburzacz\www\__PHP\include\shared.inc.php on line 379
nemáš práva otevřít -> nemáš práva zavřít -> error3
Warning: Cannot modify header information - headers already sent by (output started at D:\www\pes\armyburzacz\www\__PHP\include\shared.inc.php:369) in D:\www\pes\armyburzacz\www\__PHP\include\shared.inc.php on line 648
už ti to vypsalo tři errory, to se nesmí před header() stát -> error4
a následující 4 už tu byly.. ;)
1) Mas u adresare data nastavene pravo zapisovani? Neni v tom skriptu treba ten soubor jiz predtim otevren a nekorektne zavren (Fclose(soubor)) ? Jaky je kod od radku 360-380 a 640-643?
2) V souboru "shared.inc.php" posilas prikazem Header("") hlavicku, ale proto, ze je to s nejvetsi pravdepodobnosti soubor vlozenej pomoci require/include, to neni korektni (v souboru, ze ktereho includujes, uz byly hlavicky poslany)
hmmm, asi to bude o těch právech, protože si nechávám hlášku "Error opening data file" vypisovat jen na základě chybového otevření souboru(viz níže):
$beitrag = str_replace("|", "/", $beitrag);
$beitrag = str_replace("\n", "<br>", $beitrag); // these 3 lines do not look sophisticated,
$beitrag = str_replace("\r", "", $beitrag); // but it works properly
$beitrag = str_replace("\n", "", $beitrag);
$text = $id."|".$datum."|".$author."|".$email."|".$ort."|".$land."|".$url."|".$beitrag."|";
$content[$size] = $text;
$fp=fopen("data/data.txt", "a");
//$fp=@fopen($conf[f_data], "a");
if($fp <= 0):
?>Error opening data file.<br><?php
endif;
fputs($fp, "baf");
//fputs($fp, $content[$size]."\n");
fclose($fp);
if ($conf[feedback] == "yes") {
$title = "New Entry in myGBOOK";
$from = "From: ".$email."\nX-Mailer: MyGBOOK";
//@mail($conf[myemail], $title, $beitrag, $from);
};
// log authors ip/host, datetime and entry id
$log = new log_visitors("data/logauthors.txt", FALSE, $id );
?>
<script type="text/javascript">
//window.location.href="<?php echo basename($PHP_SELF)."?lang=".$HTTP_GET_VARS[lang]."&".md5(time()); ?>";
</script>
k souboru i slozce musi byt prava k zapisu. Co se tyce tech chyb, tak je to serie zpusobena tim, ze nelze do souboru zapisovat - resp. nelze ho otevrit pro zapis u fce fopen (nedostatecna prava). Tim padem se chyba vypise a nevytvori se filepointer. Tim padem v dalsich fput, fwrite, fread a fclose pouzivas neplatny fp, tudiz to vypise chybu. header() vyhlasi chybu, ze hlavicky byly uz odeslany, protoze se se pred jejim pouzitim vypsala nejaka chyba a tudiz byly hlavicky odeslany pred vypisem te chyby. je to jednoduche a proste. Kdyz nastavis slozce/souboru spravna prava, vsechny chyby zmizi.
Ty chyby s oteviranim souboru tam mas dve (data/data.txt , data/logauthors.txt).