Я пытаюсь установить log4php на очень простой сайт (пытаясь узнать, как он работает). Apache установлен в / etc /, а vhost определяется как:
DocumentRoot "/ home / fferri / workspace / site-tutorial / www" ServerName tutorial.localhost php_value auto_prepend_file "/home/fferri/workspace/site-tutorial/www/ConfigureSite.php" Мой сайт находится в / home / fferri / workspace / site-tutorial / www / log4php находится в /home/fferri/workspace/site-tutorial/services/lib/log4php-0.9/src/log4php/
Затем я определяю
define('LOG4PHP_DIR', "/home/fferri/workspace/site-tutorial/services/lib/log4php-0.9/src/log4php/");
в ConfigureSite.php
И, в другой файл, я пытаюсь запустить log4php:
include(LOG4PHP_DIR."/Logger.php"); $log = Logger::getLogger("main"); $log->info("foo"); $log->warn("bar");
вinclude(LOG4PHP_DIR."/Logger.php"); $log = Logger::getLogger("main"); $log->info("foo"); $log->warn("bar");
Ошибка всегда одна и та же:
Fatal error: Class 'Logger' not found in /home/fferri/workspace/site-tutorial/services/lib/log4php-0.9/src/log4php/LoggerRoot.php on line 37
Стоит сказать, что LoggerRoot.php и Logger.php находятся в одной папке. Я думаю, что у меня проблема с путями, потому что мой сервер и мой сайт находятся не в одной папке, но мне нужна подсказка
Добавление полной ошибки трассировки стека:
[22-May-2012 11:34:38] PHP Fatal error: Class 'Logger' not found in /home/fferri/workspace/site-tutorial/services/lib/log4php-0.9/src/log4php/LoggerRoot.php on line 36 [22-May-2012 11:34:38] PHP Stack trace: [22-May-2012 11:34:38] PHP 1. {main}() /home/fferri/workspace/site-tutorial/www/index.php:0 [22-May-2012 11:34:38] PHP 2. require_once() /home/fferri/workspace/site-tutorial/www/index.php:12 [22-May-2012 11:34:38] PHP 3. require_once() /home/fferri/workspace/site-tutorial/www/greet_at_opening.php:11 [22-May-2012 11:34:38] PHP 4. require_once() /home/fferri/workspace/site-tutorial/services/lib/log4php-0.9/src/log4php/Logger.php:24 [22-May-2012 11:34:38] PHP 5. require_once() /home/fferri/workspace/site-tutorial/services/lib/log4php-0.9/src/log4php/LoggerCategory.php:27 [22-May-2012 11:34:38] PHP 6. require_once() /home/fferri/workspace/site-tutorial/services/lib/log4php-0.9/src/log4php/spi/LoggerLoggingEvent.php:28 [22-May-2012 11:34:38] PHP 7. require_once() /home/fferri/workspace/site-tutorial/services/lib/log4php-0.9/src/log4php/LoggerManager.php:29 [22-May-2012 11:34:38] PHP 8. require_once() /home/fferri/workspace/site-tutorial/services/lib/log4php-0.9/src/log4php/LoggerHierarchy.php:28
Итак, во-первых, Logger найден, но при загрузке LoggerHierarchy Logger нет. Зачем????
SOLVED: ошибка заключается в том, чтобы использовать log4php-0.9 и php5 вместе. Загружая библиотеку, расположенную в Apache Web (2.1), проблема решена.
Благодаря!
Я думаю, что использование dirname(__FILE__)
будет выглядеть лучше.
Я также думал, что это будет путь …
Возможно, тогда это имя класса. вы вызываете new Logger
в Logger.php?
Что-то вроде:
include(LOG4PHP_DIR."/Logger.php"); $log = new Logger(); $log->info("foo");
вinclude(LOG4PHP_DIR."/Logger.php"); $log = new Logger(); $log->info("foo");
Ошибка заключается в том, чтобы использовать log4php-0.9 и php5 вместе. Загружая библиотеку, расположенную в Apache Web (2.1), проблема решена.