Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Tworzenie pliku i nadanie mu chmodu..
Forum PHP.pl > Forum > PHP
Giluś
Cześć chciałbym stworzyć plik z pewną zawartością i nadać mu chmod 777, tylko nie wiem jak to zrobić posiadam narazie taki kod:

  1. $cfg ="Mój_Tekst_W_Pliku"
  2. mkdir($sciezka.$plik,0755); // Tworzenie folderu
  3. $f = fopen($sciezka.$plik.'/txt.txt','w'); // Dodawanie Pliku
  4. fwrite($f,$cfg); // Dodawanie Pliku
  5. fclose($f); // Dodawanie Pliku


I jak chcę dodać pod tym funkcję która nadaje chmod to nie działa w ogóle

  1. chmod($sciezka.$plik.'/txt.txt',0777);


Nie wiem jak to połączyć, aby tworzyło plik a później nadawało 777 chmod
Fifi209
A masz uprawnienia do zmiany chmodów?
Giluś
Taa, w innym pliku wykonuje podobną operacje, najpierw kopiuje później zmieniam chmod.. wiec nie wiem czemu tutaj nie działa..
konradkw
Chciałbym się dołączyć troszkę do tego tematu ponieważ szkoda zaśmiecać forum.

Interesuje mnie utworzenie formularza o nazwie podanej uprzednio w formularzu - i to mi się jak najbardziej udało t z tym że folder tworzony jest w folderze w którym znajduje się aktualnie skrypt a chodzi o utworzenie go w innym miejscu.

aktualnie mam tak:

  1. $sciezka = '/../../include/images/sprzedaz/';
  2. mkdir($sciezka.$n,0777);


I jak sie domyslacie - nie działa ... chodzi głównie o cofnięcie się do poziomu głównego czyli gdzie wskazuje domena i z tego miejsca trzeba znaleźć folder "sprzedaz", nadmienię jeszcze że skrypt znajduje się w folderze: domena.pl/include/nazwa_folderu/skrypt.php

dodatkowo chcę przesyłać zdjęcia do tego folderu - powiedzmy 5 zdjęć max.
po wypełnieniu formularze, skrypt zabiera nas do stronki przesyłania zdjęć wygenerowanej ze wstawieniem scieżki ze zmiennej $ścieżka.$n gdzie $n to nazwa utworzonego urzednio folderu. To także nie bardzo działa i nie do końca widzę gdzie błąd - wiem że chodzi o samą ścieżkę ale nie widzę jak ją zmienić żeby zadziałało.

Oto sktypt przesyłania plików do folderu $n:

  1. if (isset($_POST['wyslij'])) {
  2. $max_rozmiar = 5024*5024;
  3. if (is_uploaded_file($_FILES['plik']['tmp_name'])) {
  4. if ($_FILES['plik']['size'] > $max_rozmiar) {
  5. echo 'Błąd! Plik jest za duży!';
  6. } else {
  7. echo '<br/>';
  8. echo '<center><img src="'.$sciezka.''.$n.'/',$_FILES['plik']['name'],'"></center>'; echo "<br/>";echo "<br/>";
  9.  
  10. move_uploaded_file($_FILES['plik']['tmp_name'],
  11. $_SERVER['DOCUMENT_ROOT'].'/'.$n.'/'.$_FILES['plik']['name']);
  12. }
  13. } else {
  14. echo 'Błąd przy przesyłaniu danych!';
  15. }}
  16.  
  17. ?>
  18.  
  19. <form action="index.php?admin=sprzedaz-projektow&a=dodaj-ubranie-na-sprzedaz" method="POST" ENCTYPE="multipart/form-data">
  20. <input type="file" name="plik"/>
  21. <input type="submit" name="wyslij" value="Wyslij plik"/>
  22. </form>


Ten skrypt jest zaraz pod utworzeniem folderu ale planuję zrobić przekierowanie z pierwszego głównego formularza do całkiem nowej strony przekazując jednocześnie nazwę folderu.

Podpowiedzcie proszę.

Pozdrawiam!


Konrad
Pilsener
1. Wysyłaj wszystkie żądania do public/index.php - wtedy nie będziesz miał problemów ze ścieżkami, inaczej radzę używać Ci adresów bezwględnych, ścieżka typu "/../../.." może nie zadziałać bo możesz nie mieć dostępu do folderów powyżej tego, w którym uruchamiasz skrypt.

2. Sprawdzaj zanim coś zrobisz czy masz uprawnienia i czy to coś się wykonało, np:
  1. if(mkdir($sciezka,0777)){
  2. echo 'sukces';
  3. }else{
  4. echo 'nie udało się utworzyć folderu '.$sciezka;
  5. }
- wtedy nie będziesz miał problemów ze zlokalizowaniem błędu, nie sprawdzasz ani czy folder się utworzył, ani czy plik został zapisany ani czy plik można zapisać w danym folderze, wszystko należy sprawdzać bo potem użytkownikowi strona się rozpada a my nie wiemy gdzie jest błąd.

3. Waliduj dane odbierane od użytkownika, także tablice $_FILES (w szczególności nazwę pliku) a plik sprawdzaj jak już masz do niego dostęp np. tak:
http://php.net/manual/pl/function.finfo-file.php - nie można ufać, że jak ktoś deklaruje taki typ/rozmiar to faktycznie tak jest.
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.