Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [ZF] Nie do końca poprawnie działający Zend Log, Bład: "Resource id #136" cannot be opened with mode "a
orideith
post
Post #1





Grupa: Zarejestrowani
Postów: 72
Pomógł: 1
Dołączył: 21.07.2006

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


Witam Was mam taki dosyć dziwny problem.
Chciałem sobie rozszeżyć klasę logera na dodatkowe opcje więc przerobiłem ją tak
  1. <?php
  2. class logger extends Zend_Log_Writer_Stream {
  3. private $_file;
  4. public function __construct($filename) {
  5. $path = APPLICATION_PATH . '/log/' . $filename . '.txt';
  6. if (!file_exists($path)) {
  7. fopen($path, 'w+');
  8. chmod($path, '755');
  9. }
  10. $this->_file = fopen($path, 'a', false);
  11. }
  12.  
  13. public function info($mess, $prior = 1) {
  14. $log = new Zend_Log(new Zend_Log_Writer_Stream($this->_file));
  15. $log->log($mess, $prior);
  16. }
  17. }
  18. ?>



Wywołanie w skócie wygląda tak
  1. require_once '../library/Logger.php';
  2. class models_jakastabela extends Zend_Db_Table_Abstract {
  3. private $_logger;
  4. public function __construct() {
  5. parent::__construct();
  6. $logger = new logger('db');
  7. $this->_logger = $logger;
  8. }
  9.  
  10. public function addSettings($data) {
  11. $data = array(
  12. 'idproducts' => $data['idproducts'],
  13. 'idatribute' => $data['idatribute'],
  14. 'column' => $data['column']
  15. );
  16. try {
  17. $this->insert($data);
  18. return 1;
  19. } catch (Zend_Db_Exception $e) {
  20. $this->_logger->info('Add atrib: ' . $e->getMessage());
  21. return 0;
  22. }
  23. }

I niestety to skutkuje takim błędem o ile wyjątek się wykona "Resource id #xx" cannot be opened with mode "a",

Wszystko stoi na windowsie, dodam jeszcze bo to ważne, że dane w pliku w tym przypadku db.txt zapisują się. Więc nie wiem czemu tak się dzieje?

Będe wdzięczny za pomoc i uwagi co do samej klasy, bo nie jestm pewien czy nie można jej ładnej napisać.

Pozdrawiam
Oskar




--------------------
projektowanie stron warszawa ::: projektowanie www ::: projekty www
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
irmidjusz
post
Post #2





Grupa: Zarejestrowani
Postów: 279
Pomógł: 60
Dołączył: 25.02.2012

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


Może chodzi o to, że najpierw otwierasz plik w trybie "w+" i od razu (bez zamknięcia pliku) otwierasz po raz drugi w trybie "a"? Strzelam.


--------------------
there is much to be learned
Go to the top of the page
+Quote Post
orideith
post
Post #3





Grupa: Zarejestrowani
Postów: 72
Pomógł: 1
Dołączył: 21.07.2006

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


Nawet bardzo strzelasz, ponieważ w +w otwierany jest tylko jeśli nie istnieje.


--------------------
projektowanie stron warszawa ::: projektowanie www ::: projekty www
Go to the top of the page
+Quote Post
irmidjusz
post
Post #4





Grupa: Zarejestrowani
Postów: 279
Pomógł: 60
Dołączył: 25.02.2012

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


hehe no a co z tym właśnie przypadkiem? nie istnieje, jest otworzony w "w+" a następnie w "a"? nie ma problemu z tym?


--------------------
there is much to be learned
Go to the top of the page
+Quote Post
YaQzi
post
Post #5





Grupa: Zarejestrowani
Postów: 94
Pomógł: 31
Dołączył: 12.10.2008
Skąd: WAT

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


ja też obstawiam to co irmidjusz. Brakuje fclose

pierwsza próba logowania wywali Ci błąd. kolejne już będa zapisywać normalnie do pliku, bo plik będzie istniał.


--------------------
 Wszystkie wielkości świata nie są tyle warte, co dobra przyjaźń...
Go to the top of the page
+Quote Post
Pilsener
post
Post #6





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


Bo trzeba było dać exit po linijce błędu i oczywiście upewnić się, czy wyświetlanie błędów jest włączone. No i jak się używa takich funkcji to warto sprawdzić, czy poprawnie się wykonały, czy mamy dostęp itp. itd. Nie polecam też tworzyć plików przez fopen bo spotkałem się z problemami - lepsze jest touch.
Go to the top of the page
+Quote Post
orideith
post
Post #7





Grupa: Zarejestrowani
Postów: 72
Pomógł: 1
Dołączył: 21.07.2006

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


z touch sproboje, exit nie chce dawac, mam wlasne komunikaty na błedy a same bledy nie chce by zakłucały pracę aplikacji. Wole informowac dokladnie uzytkownika co sie stało oczywiscie o ile nie koliduje to z bezpieczeńtwem.

Pozdrawiam


--------------------
projektowanie stron warszawa ::: projektowanie www ::: projekty www
Go to the top of the page
+Quote Post
Pilsener
post
Post #8





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


Ale tylko na chwilę przecież ten exit dasz by przeanalizować ten fragment kodu wink.gif
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: 21.08.2025 - 02:29