Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> file_put_contents() - brak błędów, dane nie są zapisywane
PotasK
post
Post #1





Grupa: Zarejestrowani
Postów: 30
Pomógł: 1
Dołączył: 25.04.2012

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


Natknąłem się dzisiaj na pewien problem, którego nie mogę rozwiązać. Pierwszy raz widzę takie cuda.

Użyłem file_put_contents() do zapisania zaserializowanej tablicy:
  1. file_put_contents(DIR_ROOT . 'cache/libmap.cache', serialize($map));

Nie jest zwracany żaden błąd, pomimo ustawienia error_reporting na E_ALL | E_STRICT w php.ini.
Faktem jest, że ostatnio reinstalowałem serwer apache, php i mysql.
Ponadto, pierwszy parametr jest ścieżką absolutną do pliku.
Drugi parametr nie jest pusty, ponieważ to sprawdzałem.
Funkcja zwraca int > 0 (dokładnie na chwilę obecną 831).
Uprawnienia i katalogu cache, i pliku libmap.cache, ustawiłem na 0777.

Pomimo tego wszystkiego, do pliku nie jest nic zapisywane.

Jeśli ktoś ma jakieś pytania albo potrzebuje dodatkowych informacji, to dajcie znać.

Z góry wielkie dzięki za pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
viking
post
Post #2





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


error_reporting(-1);


--------------------
Go to the top of the page
+Quote Post
PotasK
post
Post #3





Grupa: Zarejestrowani
Postów: 30
Pomógł: 1
Dołączył: 25.04.2012

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


Cytat(viking @ 25.05.2012, 11:57:15 ) *
error_reporting(-1);


Bez zmian.
Go to the top of the page
+Quote Post
mls
post
Post #4





Grupa: Zarejestrowani
Postów: 677
Pomógł: 89
Dołączył: 31.08.2003
Skąd: Warszawa

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


Cytat(PotasK @ 25.05.2012, 11:54:23 ) *
Ponadto, pierwszy parametr jest ścieżką absolutną do pliku.
Drugi parametr nie jest pusty, ponieważ to sprawdzałem.
Funkcja zwraca int > 0 (dokładnie na chwilę obecną 831).


Funkcja zwraca ilość zapisanych do pliku bajtów. Czyli wszystko się zgadza, zapisane zostało 831 B. Gdyby wystąpił błąd podczas zapisu, zwrócone byłoby FALSE.
Problemem jest tu prawie na pewno ścieżka do pliku - zapewne nie zawiera tego, czego się spodziewasz.


--------------------
Go to the top of the page
+Quote Post
rocktech.pl
post
Post #5





Grupa: Zarejestrowani
Postów: 587
Pomógł: 131
Dołączył: 8.02.2010

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


Witam.

Zabierz się do tego obiektowo.

  1. //Zapis
  2. $cache_file = new SplFileObject ( DIR_ROOT . 'cache/libmap.cache', "a+" );
  3. $cache_file->fwrite ( serialize ( $map ) );
  4. //Odczyt
  5. $cache_file->rewind ();
  6. $data = unserialize ( $cache_file->fgets () );


Nic dodania poza tym co napisane.


--------------------
Despite the tons of examples and docs, mod_rewrite is voodoo. Damned cool voodoo, but still voodoo. --Brian Moore

I never go looking for a sucker. I look for a Champion and make a sucker of of him. --Amarillo Slim


Home-made : js-gui-classes | Accordion | Tabs | Carousel / php-sms-classes | Obsługa bramki SMS MultiInfo | Obsługa bramki SMS Mobiltek
Go to the top of the page
+Quote Post
PotasK
post
Post #6





Grupa: Zarejestrowani
Postów: 30
Pomógł: 1
Dołączył: 25.04.2012

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


Cytat
Problemem jest tu prawie na pewno ścieżka do pliku - zapewne nie zawiera tego, czego się spodziewasz.


Zawiera, to, czego się spodziewam, wygląda to tak:
  1. // ...
  2. protected $_cacheFile = 'cache/libmap.cache';
  3. // ...
  4. var_dump(\DIR_ROOT . $this->_cacheFile);

I tak, ukośnik przed DIR_ROOT jest potrzebny, ponieważ stała ta jest zdefiniowana w domyślnej przestrzeni nazw, a klasa jest umieszczona w innej.

A wynikiem jest:
Kod
/var/www/peridot/cache/libmap.cache


@EDIT:
rocktech.pl, no i w ten sposób też nie działa, myślę, że to bardziej coś po stronie serwera, ale nie mogę wpaść na to, co?

Dobra, problem rozwiązany. Temat do zamknięcia.

Okazało się, że zamiast sprawdzać, czy zawartość pliku została zapisana na serwerze, sprawdzałem w katalogu projektu.
Przepraszam za zamieszanie.

Ten post edytował PotasK 25.05.2012, 12:18:15
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.08.2025 - 12:55