Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z utworzeniem pliku w katalogu.
atasze
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 16.10.2007

Ostrzeżenie: (0%)
-----


Witam,
napotkałem na następujący problem mianowicie, posiadam skrypt który tworzy katalog z wygenerowaną nazwą tzn.
Kod
$nowykatalog = date("Y.m.d");

if (file_exists($nowykatalog))
    {
    echo "<B>Katalog</B><font color=red> $nowykatalog </font><B>istnieje.</B>";
    }
    else
    {
    echo "<B>Katalog</B><font color=red> $nowykatalog </font><B>nie istnieje.</B>";
    mkdir($nowykatalog, 0755);
    chmod($nowykatalog, 0777);
    }

następnie ma za zadanie utworzyc plik.txt w tym wygenerowanym katalogu.
Czy ja dobrze kombinuję?
Kod
$nowyplik = '/costam/'.$nowykatalog.'/plik.txt';

if (file_exists($nowyplik))
    {
    echo "<B>Plik</B><font color=red> $nowyplik </font><B>istnieje.</B>";
    }
    else
    {
    echo "<B>Plik</B><font color=red> $nowyplik </font><B>nie istnieje.</B>";
    $f = fopen($nowykatalog.'/plik.txt', 'a+');
    fwrite($f, 'To jest nowa zawartosc pliku');
    fclose($f);
    }

Skrypt nie potrafi mi utworzyc pliku w tym katalogu. Macie jakies pomysły?

Ten post edytował atasze 16.10.2007, 18:25:41
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
bartekmedon
post
Post #2





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 10.07.2007
Skąd: Kozy

Ostrzeżenie: (0%)
-----


Najprościel chyba :

  1. <?php
  2. $lokalizacja = "folder/folder/plik.txt";
  3. if ( !(file_exists($lokalizacja)) )
  4. {
  5.  $plik = @fopen($lokalizacja,"w+");
  6.  fputs($plik,"jakas zawartosc");
  7.  fclose($plik);
  8. }
  9. ?>


Przy operacjach na plikach itd pamiętaj o odpowiednich prawach

Ten post edytował bartekmedon 16.10.2007, 19:12:54
Go to the top of the page
+Quote Post
andchaos
post
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 16.10.2007

Ostrzeżenie: (0%)
-----


1. jak używasz funkcji fwrite() to o ile się nie myle należy podać trzy argumenty -> fwrite($f,'To jest nowa zawartosc pliku',28); z czego ten ostatni określa liczbę bajtów, która mają być zapisane w pliku, stosuje się tylko jak chcesz zapisać tylko fragment ciągu znaków, jak zapisujesz całość to najlepiej użyć funkcji fputs($f, 'To jest nowa zawartosc pliku'); no dobra, ale to nie może być przyczyną że nie utworzy ci się nowy plik, albo?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ?.

2. poza tym mi wygląda wszystko na dobrze, ewentualnie może być że serwer na którym umieszczona jest stronka blokuje tą funkcję, spotkałem się z tym że darmowe serwisy hostingowe mają zablokowane używanie takich funkcji jak fopen() czy mail().
Go to the top of the page
+Quote Post
atasze
post
Post #4





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 16.10.2007

Ostrzeżenie: (0%)
-----


To nie wina serwera, ogólnie tworzy mi kazdy inny plik ale w katalogu nadrzednym a ja chce utworzyc ten plik w katalogu podrzędnym który co dzien dynamicznie sie generuje jesli ktos odpali skrypt z przegladarki. Kod strony wygląda następująco:
  1. <?php
  2. $nowykatalog = date("Y.m.d");
  3. $nowyplik = '/costam/'.$nowykatalog.'/plik.txt';
  4.  
  5. if (file_exists($nowykatalog))
  6. {
  7. echo "<B>Katalog</B><font color=red> $nowykatalog </font><B>istnieje.</B>";
  8. }
  9. else
  10. {
  11. echo "<B>Katalog</B><font color=red> $nowykatalog </font><B>nie istnieje.</B>";
  12. mkdir($nowykatalog, 0755);
  13. chmod($nowykatalog, 0777);
  14. }
  15. if (file_exists($nowyplik))
  16. {
  17. echo "<B>Plik</B><font color=red> $nowyplik </font><B>istnieje.</B>";
  18. }
  19. else
  20. {
  21. echo "<B>Plik</B><font color=red> $nowyplik </font><B>nie istnieje.</B>";
  22. $plik = fopen($nowyplik, 'a+');
  23. fputs($plik,"jakas zawartosc");
  24. fclose($plik);
  25. }
  26. ?>

Error log:
Kod
Katalog 2007.10.16 istnieje.
Plik /costam/2007.10.16/plik.txt nie istnieje.

Warning: fopen() [function.fopen]: open_basedir restriction in effect. File(/costam/2007.10.16/plik.txt) is not within the allowed path(s): (/home/fotoolek:/usr/lib/php:/usr/local/lib/php:/tmp) in /home/fotoolek/public_html/kamil/costam/test.php on line 22

Warning: fopen(/inwigilator/2007.10.16/plik.txt) [function.fopen]: failed to open stream: Operation not permitted in /home/fotoolek/public_html/kamil/costam/test.php on line 22

Warning: fputs(): supplied argument is not a valid stream resource in /home/fotoolek/public_html/kamil/costam/test.php on line 23

Warning: fclose(): supplied argument is not a valid stream resource in /home/fotoolek/public_html/kamil/costam/test.php on line 24
Go to the top of the page
+Quote Post
bartekmedon
post
Post #5





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 10.07.2007
Skąd: Kozy

Ostrzeżenie: (0%)
-----


Ale jeśli ja dobrze widzę to kiedy Twój plik jeszcze nie istnieje stosujesz fopen z parametrem (2) a+ - a z tego co mi wiadomo a+ otwiera plik do odczytu oraz do dopisywania , ale nie pozwala na utworzenie pliku. Dlatego powinieneś użyć w+
Go to the top of the page
+Quote Post
franki01
post
Post #6





Grupa: Zarejestrowani
Postów: 508
Pomógł: 75
Dołączył: 2.11.2005
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Sprobuj:

  1. <?php
  2. // ...........
  3. mkdir($nowykatalog, 0777);
  4. // ...........
  5. ?>



0755 zamienione na 0777

Ten post edytował franki01 18.10.2007, 06:58:57
Go to the top of the page
+Quote Post
atasze
post
Post #7





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 16.10.2007

Ostrzeżenie: (0%)
-----


Dzięki już sobie poradziłem z tym problemem, problem polegał na tym, że nie wskazałem bezwzględnej ścieżki do pliku. (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 01:02