Skocz do zawartości

Warning: flock() expects parameter 1 to be resource, boolean given


westmid

Rekomendowane odpowiedzi

Mam błąd:

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

Wykonuję przykład z "PHP i MySQL Tworzenie stron WWW - L. Welling i L. Thomson:

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

flock($wp, LOCK_EX);

if (!$wp) { 
	echo 'Proszę zamówić jeszcze raz - przepraszamy, nastąpił rzadki błąd serwera. <a href="index.php">Powrót do formularza zamówień</a>.'; 
	exit; 
}

Google mówi, że jeśli ustawię LOCK_EX przed if - zadziała. I zaiste tak się dzieje, ale na mój rozum, wtedy LOCK_EX nie zablokuje nam dostępu do pliku i cała zabawa będzie bez sensu.

Pomocy, naprawdę chcę zablokować ten plik i pokazać ładne ostrzeżenie internautom. :)

*rzadki. :) wojtecki1 :)

Odnośnik do komentarza
Udostępnij na innych stronach

Zacznijmy od tego co chcesz finalnie osiągnąć ? flock w żaden sposób nie zablokuje tego pliku dla internautów, a jedynie dla skryptu i to do momentu zamknięcia pliku.

Ta @ przed fopen skutecznie maskuje problem :) fopen zwróciło wartość logiczną, a dzieje się to w momencie gdy plik, który chcesz otworzyć nie istnieje.

A dla leniwych: sprzątanie białystok ;]

A dla relaksu możesz zapalić kadzidełka

faceplus_banner_234x60_black.png Punkty FanCop od 3pln / 1k

SPRZEDAM: Volvo S40 1.9D, 2002; 220k przebiegu. Lokalizacja: Białystok; Tel 724-148-596

Odnośnik do komentarza
Udostępnij na innych stronach

Instrukcja warunkowa jakiej używasz:

if (!$wp) {

nie sprawdza czy na plik została nałożona blokada, ale czy istnieje uchwyt do strumienia pliku uzyskany funkcja $wp = fopen.

Jeśli chcesz sprawdzić czy funkcji udało się założyć blokadę musisz zrobić to w inny sposób zgodnie z informacją o typie zwracanym przez funkcję "bool flock ( "

Poza tym to co robisz - system oparty na plikach to istne cofanie się do początków internetu :)

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Instrukcja warunkowa jakiej używasz:

if (!$wp) {

nie sprawdza czy na plik została nałożona blokada, ale czy istnieje uchwyt do strumienia pliku uzyskany funkcja $wp = fopen.

Jeśli chcesz sprawdzić czy funkcji udało się założyć blokadę musisz zrobić to w inny sposób zgodnie z informacją o typie zwracanym przez funkcję "bool flock ( "

Poza tym to co robisz - system oparty na plikach to istne cofanie się do początków internetu :D

Ale w książce kazali przećwiczyć, więc to robię. Człowiek czyta podręcznik pisany przez koxów i w drugim omawianym skrypcie jest błąd. :)

Odnośnik do komentarza
Udostępnij na innych stronach

W tego typu książkach jest masa "nieścisłości" :) lepiej czerpać wiedzę u źródeł https://php.net/

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności