Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z fopen()
Forum PHP.pl > Forum > Przedszkole
divix
Mam skrypt z książki do php taki oto skrypt na otwieranie i zapisywanie na pliku typu txt:

  1. <?php
  2. $iloscopon = $_POST['iloscopon'];
  3. $iloscoleju = $_POST['iloscoleju'];
  4. $iloscswiec = $_POST['iloscswiec'];
  5. $adres = $_POST['adres'];
  6. $adres = $_POST['adres'];
  7.  
  8. $DOCUMENT_ROOT = $_POST['DOCUMENT_ROOT'];
  9. ?>
  10.  
  11. <html>
  12. <head>
  13. <title>Części samochodowe Janka — wyniki zamówienia</title>
  14. </head>
  15. <body>
  16. <h1>Części samochodowe Janka</h1>
  17. <h2>wyniki zamówienia</h2>
  18. <?php
  19.  
  20.  $data=date('H:i, jS F');
  21.  
  22. echo '<p>Zamówienie przyjęte o ';
  23.  
  24. echo $data;
  25. echo '</p>';
  26. echo '<p>Zamówienie Państwa wygląda następująco: </p>';
  27.  
  28. $ilosc=0;
  29. $ilosc=$iloscopon+$iloscoleju+$iloscswiec;
  30.  
  31. if( $ilosc == 0 )
  32. {
  33. echo 'Na poprzedniej stronie nie zostało złożone żadne zamówienie!<br />';
  34. }
  35. else
  36. {
  37. if ( $iloscopon>)
  38. echo $iloscopon.' opon<br />';
  39. if ( $iloscoleju>)
  40. echo $iloscoleju.' butelek oleju<br />';
  41. if ( $iloscswiec>)
  42. echo $iloscswiec.' świec zapłonowych<br />';
  43. }
  44.  
  45. $wartosc=0.00;
  46.  
  47. define('CENAOPON', 100);
  48. define('CENAOLEJU', 10);
  49. define('CENASWIEC', 4);
  50.  
  51. $wartosc =$iloscopon * CENAOPON + $iloscoleju * CENAOLEJU + $iloscswiec * CENASWIEC;
  52.  
  53. $wartosc=number_format($wartosc, 2, '.', ' ');
  54.  
  55. echo '<P>Wartoœć zamówienia wynosi '.$wartosc.'</P>';
  56.  
  57. echo '<P>Adres wysyłki to '.$adres. '</P>';
  58.  
  59. $ciagwyjsciowy = $data.&#092;"t\".$iloscopon.\" opon t\".$iloscoleju.\" butelek olejut\"
  60.  .$iloscswiec.&#092;" swiec zapłonowycht\".$wartosc
  61.  .&#092;"PLN/t\". $adres.\"n\";
  62.  
  63.  $wp = fopen(&#092;"$DOCUMENT_ROOT/../zamowienia/zamowienia.txt\", 'ab');
  64.  
  65. if (!$wp)
  66. {
  67. echo '<p><strong> Zamówienie Państwa nie może zostać przyjęte w tej chwili. '
  68.  .'Proszę spróbować później.</strong></p></body></html>';
  69. }
  70.  
  71. fwrite($wp, $ciagwyjsciowy, strlen($ciagwyjsciowy));
  72. fclose($wp);
  73.  
  74. echo '<p>Zamówienie zapisane.</p>';
  75. ?>
  76. </body>
  77. </html>


a jednak występuje mi błąd przy próbie otwarcia pliku:

  1. <?php
  2. Warning: fopen(): open_basedir restriction in effect. File(/../zamowienia/zamowienia.txt) is not within the allowed path(s): (/srv/free/act3362) in /srv/free/act3362/przetworzzamowienie.php on line 65
  3.  
  4. Warning: fopen(/../zamowienia/zamowienia.txt): failed to open stream: Operation not permitted in /srv/free/act3362/przetworzzamowienie.php on line 65
  5.  
  6. Zamówienie Państwa nie może zostać przyjęte w tej chwili. Proszę spróbować póŸniej
  7.  
  8. ?>

co musze poprawić gdzie jest błąd questionmark.gif Prosze pomóźcie ! ;(
zbig13
Zwróć uwagę na linię 66 w skrypcie. Jest tam zmienna $DOCUMENT_ROOT. Jednak nie jest ona zmienną superglobalną, dlatego jeśli masz wyłączona opcję register_globals (w pliku konfiguracyjnym), php nie rozpozna jej. Zmień tą linię na taką:
  1. <?php
  2.  
  3. $wp = fopen(&#092;"{$_SERVER['DOCUMENT_ROOT']}/../zamowienia/zamowienia.txt\", 'ab');
  4.  
  5. ?>
tiraeth
Przenoszę: Skrypty php -> php Początkujący
divix
a jeżeli wstawie samo zamowienia.txt bez żadnych dokument_root i $ serwer questionmark.gif
zbig13
Możesz, tylko wtedy będziesz musiał podać dokładną scieżke do pliku zamówienia, np.
  1. <?php
  2.  
  3. $wp = fopen(&#092;"./zamowienia/zamowienia.txt\", 'ab');
  4.  
  5. ?>

DOCUMENT_ROOT oznacza chyba katalog położony najwyżej w hierarchi, ale nie jestem pewien.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.