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


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.
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.
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?
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ł.
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
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 (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 18:10