• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

PHP - Problem z zapisem do pliku .txt

Object Storage Arubacloud
0 głosów
927 wizyt
pytanie zadane 26 maja 2015 w PHP przez TomWaw.IT Użytkownik (920 p.)
edycja 26 maja 2015 przez TomWaw.IT

Witam, zdaję sobie sprawę z tego, że powodem jest brak uprawnień skryptu do zapisu/ odczytu, ale nie wiem jak to zmienić. Używam pakietu XAMPP.

PS.1: Zależy mi na poprawnym działaniu funkcji fopen() z trybem "a", tzn aby program sam utworzył plik zamówienia.txt

Przy próbie zapisu danych do pliku .txt wyświetlają się błędy:

Warning: fopen(C:/.../xampp/htdocs/../zamowienia/zamowienia.txt): failed to open stream: No such file or directory in C:\...\xampp\htdocs\vad\1\przetworzzamowienie.php on line 101

Warning: flock() expects parameter 1 to be resource, boolean given in C:\...\xampp\htdocs\vad\1\przetworzzamowienie.php on line 103

Warning: fwrite() expects parameter 1 to be resource, boolean given in C:\...\xampp\htdocs\vad\1\przetworzzamowienie.php on line 112

Warning: flock() expects parameter 1 to be resource, boolean given in C:\...\xampp\htdocs\vad\1\przetworzzamowienie.php on line 113

Warning: fclose() expects parameter 1 to be resource, boolean given in C:\...\xampp\htdocs\vad\1\przetworzzamowienie.php on line 114

 

A to fragment kodu PHP:

$wp = fopen ("$DOCUMENT_ROOT/../zamowienia/zamowienia.txt", 'ab'); 

        flock($wp, LOCK_EX);

        fwrite($wp, $ciagwyjsciowy, strlen($ciagwyjsciowy));
        flock($wp, LOCK_UN);
        fclose($wp);

2 odpowiedzi

+1 głos
odpowiedź 26 maja 2015 przez Comandeer Guru (601,110 p.)
Wygląda jak kod z nieśmiertelnego vademecum profesjonalisty

Błędy braku uprawnień do zapisu są dość nietypowe dla windowsa - bardziej bym upatrywal przyczyny w tym, że katalogu zamowienia nie ma w odpowiednim miejscu. Jeśli jest, to kliknij prawym, wybierz "właściwości" i sprawdź czy nie jest zaznaczone choćby "tylko do odczytu"
komentarz 26 maja 2015 przez TomWaw.IT Użytkownik (920 p.)

Wszystko się zgadza to kod z vademecum ;) 

Myslę że to dobry trop, lecz po odznaczeniu "tylko do oczytu" i  zastosowaniu zmian, gdy wchodzę ponownie w "właściwości" katalogu znów okienko "tylko do oczytu" jest zaznaczone... Tak jakby "coś" z góry narzucało że katalog ma być tylko do odczytu..?

PS. W książce napisano: "nalezy upewnić się, czy skrypt, który jest stosowany, posiada prawo dostępu do danego pliku. Zależnie od konfiguracji serwera, skrypt może być uruchomiony z prawami użytkownika serwera WWW lub z prawami właściciela swojego katalogu"...

 

komentarz 26 maja 2015 przez Comandeer Guru (601,110 p.)
Dawno na windowsie mnie nie było, ale kojarzę, że było coś typu "Uruchom jako administrator". Jeśli da się Eksplorator Windows w taki sposób uruchomić, to być może wówczas zmiana uprawnień pliku się zapisze
komentarz 26 maja 2015 przez TomWaw.IT Użytkownik (920 p.)

Udało mi się rozwiązac problem stasując w kodzie ścieżkę zapisu:

"../zamowienia/zamowienia.txt"  (na logikę) zamiast: 

"$DOCUMENT_ROOT/../zamowienia/zamowienia.txt" (proponowana w książce)

przy czym:  $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];

Czy ktoś może wyjaśnić mi dlaczego sposób z książki u mnie nie działa? 

 

komentarz 26 maja 2015 przez Comandeer Guru (601,110 p.)

A obadaj se przy pomocy var_dump co tam siedzi

0 głosów
odpowiedź 26 maja 2015 przez Jolan Obywatel (1,380 p.)

mam takiego gotowca (licznik odwiedzin) możesz oczywiście musisz utowrzyć plik licznik.txt

<?php
$czas=date('Y-m-d H:i:s');

// zapisywanie ip do pliku
$ipadd = getenv(REMOTE_ADDR);
$addip = "TRUE";
$hits = 0;

/* plikowi nadaj atrybuty 777 */
$file = "licznik.txt";


if (file_exists($file))
{
} else
{
echo "$file nie istnieje!";
exit;
}


$fp = fopen($file,"r");
while (!feof($fp))
{
$line = fgets($fp, 4096); //czas
$line=trim($line);
if ($line != "")
{
$hits++;
}
// Jeżeli ip było już zapisane...
if ($line==$ipadd)
{
$addip = "FALSE";
}
}
fclose($fp);

// jeżeli nie ma zapisane ip w pliku...
if ($addip == "TRUE")
{
$fp = fopen($file,"a");
fwrite($fp, "\n");
fwrite($fp, $hits);
fwrite($fp, ') ip: ' );
fwrite($fp, $ipadd );
fwrite($fp,  ' - time: ' );
fwrite($fp, $czas );
fwrite($fp,  ' <br> ' );
fclose($fp);
$hits++;
}

// Wyświetlanie ilości odwiedzin unikalnych
echo $hits;
?>

 

Podobne pytania

0 głosów
1 odpowiedź 253 wizyt
pytanie zadane 25 lipca 2018 w C i C++ przez MatZyN Początkujący (350 p.)
0 głosów
2 odpowiedzi 362 wizyt
pytanie zadane 22 lipca 2015 w PHP przez DL TD Nałogowiec (36,710 p.)
0 głosów
3 odpowiedzi 492 wizyt
pytanie zadane 21 lipca 2015 w C i C++ przez Avernis Nałogowiec (27,400 p.)

92,568 zapytań

141,422 odpowiedzi

319,638 komentarzy

61,957 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...