Autor Zpráva
T.
Profil *
Pokud se snažím manipulovat se souborem:


$fp = FOpen ("data.txt", "r"); 
$data = FRead ($fp, FileSize ("data.txt")); 
FClose ($fp); 



Hodí mi to chybu :
Warning: fopen(data.txt): failed to open stream: No such file or directory in c:\program files\easyphp1-8\www\pokus3.php on line 34

Warning: filesize(): Stat failed for data.txt (errno=2 - No such file or directory) in c:\program files\easyphp1-8\www\pokus3.php on line 35

Warning: fread(): supplied argument is not a valid stream resource in c:\program files\easyphp1-8\www\pokus3.php on line 35

Warning: fclose(): supplied argument is not a valid stream resource in c:\program files\easyphp1-8\www\pokus3.php on line 36


absolutně vůbec nevím co s tím je. :)
Měsíček
Profil
No tak nejspíše ten soubor neexistuje.
T.
Profil *
existuje, je ve stejné složce jako soubor, do kterého to píšu.
Měsíček
Profil
dej místo r a+
T.
Profil *
Lepší ale jetě jedna chyba s nějak s tou velikostí

Warning: fread(): Length parameter must be greater than 0. in c:\program files\easyphp1-8\www\pokus3.php on line 36

kam mám co zapsat prosim?
Měsíček
Profil
no ono to říká, že to nemůže číst protože soubor má malou velikost takže dříve do něj něco dej a potom si hrej ;)
T.
Profil *
úžasná chyba, soubor existuje i je plný, ale jmenoval se data.txt.txt - ach jo :(

Díky za spolupráci.
T.
Profil *
Tak přeci jenom ještě jedna chybka.

$file="data.txt";
$fp=Fopen($file, "r");
$data=FRead($fp, FileSize ($file));
FClose ($fp);
echo $data;
//zatim vse ok

FOpen("data2.txt","w");
//otevreno
FWrite("data2.txt", $data);


tak přesně ten poslední řádek nefunguje, hází

Warning: fwrite(): supplied argument is not a valid stream resource in c:\program files\easyphp1-8\www\pokus3.php on line 54

Soubor data2.txt existuje. V souboru data.txt je text, ktery chci zkopirovat. Soubor data2.txt je prazdny.
BetaCam
Profil
T.

$file="data.txt";
$fp=Fopen($file, "r");
$data=FRead($fp, FileSize ($file));
FClose ($fp);
echo $data;
//zatim vse ok

$wf = FOpen("data2.txt","w");
//otevreno
FWrite($wf, $data);
fclose($wf);


nebo konstrukce viz. odkaz :

http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=9&topic=82 097#6
Měsíček
Profil
<?php
  /* Jestliže soubor neexistuje vytvoří se 
     zadalší se také kontroluje jestli nasta-
     la chyba, jestli ano vypíše se hláška */
  if($f_1 = fopen("soubor_1.txt", "a+")){
  // echo "Soubor otevřen/vytvořen!";
  } else {
    echo "Někde nastala chyba!";
  };
  
  /* Zde se PHP pokusí otevřít soubor, jestliže v něm 
     nic není vyskočí chyba, jestliže je vše v pořádku
     vypíše se hláška a pak i obsah souboru */
  if($f_1_r = fread($f_1, filesize("soubor_1.txt"))){
    echo "Soubor byl otevřen možno číst\n<br>";
      echo $f_1_r;
  } else {
    echo "Soubor žel nejde otevřít pro čtení";
  };
  
  /* Zde se pokusí PHP zapsat nějáké data do souboru */
  $obsah_zapisu = "Tohle bude v souboru";
  if($f_1_w = fwrite($f_1, $obsah_zapisu)){
    echo "Do souboru bylo zapsáno: \"".$obsah_zapisu."\"";
  } else {
    echo "Do souboru nelze nic zapsat!";
  };
  
  /* Zde se PHP pokusí vytvořit nový soubor a překopírovat do něj
     vše ze souboru předchozího */
  if($f_2 = fopen("soubor_2.txt","a+")){
    if($f_2_w = fwrite($f_2,$f_1_r)){
      echo "Soubor byl zkopírován";
    }
  } else {
    echo "Někde nastala chyba!";
  };
  
  /* Zde se uzavřou oba dva soubory */
  if(fclose($f_1) && fclose($f_2)){
    echo "Soubory uzavřeny!";
  } else {
    echo "Soubory nejdou uzavřít!";
  };
  
  /* Celý skript si projdi pokud nechceš, aby se vypisovaly
     hlášky tak je zakomentuj :) */
   
?>
Doufám, že se z toho alespoň něco naučíš.
BetaCam
Profil
T.
Měsíček

Jinak možná by se tam ještě hodil exclusive lock na kterej sem také při zápisu nemyslel, ale to ať si tazatel rozhodne už sám.
imploder
Profil
BetaCam
Když v PHP otevřu soubor, tak do něj můžou současně psát i jiné aplikace? Ve Windows v takových případech vyskočí, že soubor je používán a nejde to. Jak se ten lock dělá?
BetaCam
Profil
imploder
flock

Bohužel je to funkce která má některé mouchy :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0