Forum eduweb.pl • Wyświetl temat - Początkujący w php i błąd
Z uwagi na dużą liczbę wpisów stworzonych bez wątpienia wyłącznie w celu pozycjonowania stron na określone frazy, dodaliśmy do wszystkich linków (w postach i podpisach) atrybut rel="nofollow". Z tego względu wszystkie dodane linki straciły swoją moc pozycjonerską. Forum jest dla Was, dlatego prosimy o zamieszczanie wyłącznie "prawdziwych" tematów i odpowiedzi.

Początkujący w php i błąd

asp.NET, PHP oraz bazy danych
  • Wiadomości
Offline

belfegor1

  • Posty: 110
  • Rejestracja: 5 mar 2010, o 20:19
  • Lokalizacja: Kaniów

Początkujący w php i błąd

Post5 mar 2016, o 22:44

Uczę się PHP z książki PHP i MySQL. Tworzenie stron WWW. Vademecum profesjonalisty i mam błąd
Kod: Zaznacz cały
Warning: flock() expects parameter 1 to be resource, boolean given in C:\wamp\www\php-kurs\rozdzial-02\przetworzzamowienie.php on line 68

Zawartość pliku
Kod: Zaznacz cały
<?php
  // utworzenie krótkich nazw zmiennych
  $iloscopon = $_POST['iloscopon'];
  $iloscoleju = $_POST['iloscoleju'];
  $iloscswiec = $_POST['iloscswiec'];
  $adres = $_POST['adres'];
  $adres = $_POST['adres'];
  $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
  $data=date('H:i, jS F Y');
?>

<html>
<head>
    <meta charset="utf-8" />
  <title>Części samochodowe Janka — wyniki zamówienia</title>
</head>
<body>
<h1>Części samochodowe Janka</h1>
<h2>Wyniki zamówienia</h2>
<?php

  echo "<p>Zamówienie przyjęte o ".$data."</p>";

  echo "<p>Zamówienie Państwa wygląda następująco: </p>";

  $ilosc = 0;
  $ilosc = $iloscopon + $iloscoleju + $iloscswiec;
  echo "Zamówionych części: ".$ilosc."<br />";

  if($ilosc == 0) {
    echo "Na poprzedniej stronie nie zostało złożone żadne zamówienie!<br />";

  } else {

    if ($iloscopon > 0) {
      echo $iloscopon." opon<br />";
    }

    if ($iloscoleju > 0) {
      echo $iloscoleju." butelek oleju<br />";
    }

    if ($iloscswiec > 0) {
      echo $iloscswiec." świec zapłonowych<br />";
    }
  }

  $wartosc=0.00;

  define('CENAOPON', 100);
  define('CENAOLEJU', 10);
  define('CENASWIEC', 4);

  $wartosc =$iloscopon * CENAOPON + $iloscoleju * CENAOLEJU + $iloscswiec * CENASWIEC;

  $wartosc=number_format($wartosc, 2, '.', ' ');

  echo "<p>Wartość zamówienia wynosi ".$wartosc."</p>";
  echo "<p>Adres wysyłki to ".$adres. "</p>";

  $ciagwyjsciowy = $data."\t".$iloscopon." opon \t".$iloscoleju." butelek oleju\t"
                   .$iloscswiec." swiec zapłonowych\t".$wartosc
                   ."PLN\t". $adres."\n";

  // otwarcie pliku w celu dopisywania
  @ $wp = fopen("$DOCUMENT_ROOT/../zamowienia/zamowienia.txt", 'ab');

  flock($wp, LOCK_EX);

  if (!$wp) {
    echo "<p><strong> Zamówienie Państwa nie może zostać przyjęte w tej chwili.
         Proszę spróbować później.</strong></p></body></html>";
    exit;
  }

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

  echo "<p>Zamówienie zapisane.</p>";
?>
</body>
</html>
Offline
Awatar użytkownika

Piotr Palarz

Ekspert

Ekspert

  • Posty: 685
  • Rejestracja: 24 kwie 2012, o 00:37

Re: Początkujący w php i błąd

Post8 mar 2016, o 17:07

Komunikat mówi, że do funkcji flock zamiast przekazać resource, przekazałeś boolean czyli true lub false. W tym przypadku na pewno będzie to false, które jest zwracane przez funkcję fopen kiedy nie uda się otworzyć pliku. Zatem w miejscu, gdzie tworzysz zmienną $wp i otwierasz plik, zostało do niej zwrócone false. A później wstawiasz tą zmienną w funkcji flock, która właśnie zwróciła błąd, bo nie oczekuje true lub false.

Wniosek z tego taki, że nie udało się otworzyć pliku, a więc podałeś złą ścieżkę lub np. uprawnienia pliku na to nie pozwalają, ale to mniej prawdopodobne.

Usuń małpkę przed otwarciem pliku, która wygłusza błędy i wtedy błąd o otwieraniu pliku pokaże Ci się na ekranie.
Obrazek
Offline

belfegor1

  • Posty: 110
  • Rejestracja: 5 mar 2010, o 20:19
  • Lokalizacja: Kaniów

Re: Początkujący w php i błąd

Post3 maja 2016, o 10:11

Nie mogę sobie z tym poradzić. Czy możesz Piotrze na to zerknąć
https://www.dropbox.com/s/soedg4c7gw8jnoz/rozdzial_02.zip?dl=0.
To jest ten przykład z książki.

Wróć do Server side

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 0 gości

cron