Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Zend Studio Server и PEAR_Config

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

MaxIkar



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Решил использовать в своем проекте PEAR_Config, но при попытке отладки через дебаггер Zend Studio вываливается в момент require_once('Config.php'); с кучей Notice и Fatal error:

Код:
 
Debug session started.
Notice: e:\php\PEAR\Config.php line 54 - Constant PEAR_CONFIG_DEFAULT_CHANNEL already defined
Notice: e:\php\PEAR\Config.php line 62 - Constant PEAR_CONFIG_SYSCONFDIR already defined
Notice: e:\php\PEAR\Config.php line 71 - Constant PEAR_CONFIG_DEFAULT_MASTER_SERVER already defined
Notice: e:\php\PEAR\Config.php line 80 - Constant PEAR_CONFIG_DEFAULT_HTTP_PROXY already defined
Notice: e:\php\PEAR\Config.php line 91 - Constant PEAR_CONFIG_DEFAULT_PHP_DIR already defined
Notice: e:\php\PEAR\Config.php line 100 - Constant PEAR_CONFIG_DEFAULT_EXT_DIR already defined
Notice: e:\php\PEAR\Config.php line 116 - Constant PEAR_CONFIG_DEFAULT_DOC_DIR already defined
Notice: e:\php\PEAR\Config.php line 123 - Constant PEAR_CONFIG_DEFAULT_BIN_DIR already defined
Notice: e:\php\PEAR\Config.php line 131 - Constant PEAR_CONFIG_DEFAULT_DATA_DIR already defined
Notice: e:\php\PEAR\Config.php line 139 - Constant PEAR_CONFIG_DEFAULT_TEST_DIR already defined
Notice: e:\php\PEAR\Config.php line 148 - Constant PEAR_CONFIG_DEFAULT_TEMP_DIR already defined
Notice: e:\php\PEAR\Config.php line 157 - Constant PEAR_CONFIG_DEFAULT_CACHE_DIR already defined
Notice: e:\php\PEAR\Config.php line 166 - Constant PEAR_CONFIG_DEFAULT_DOWNLOAD_DIR already defined
Notice: e:\php\PEAR\Config.php line 174 - Constant PEAR_CONFIG_DEFAULT_PHP_BIN already defined
Notice: e:\php\PEAR\Config.php line 181 - Constant PEAR_CONFIG_DEFAULT_VERBOSE already defined
Notice: e:\php\PEAR\Config.php line 188 - Constant PEAR_CONFIG_DEFAULT_PREFERRED_STATE already defined
Notice: e:\php\PEAR\Config.php line 195 - Constant PEAR_CONFIG_DEFAULT_UMASK already defined
Notice: e:\php\PEAR\Config.php line 202 - Constant PEAR_CONFIG_DEFAULT_CACHE_TTL already defined
Notice: e:\php\PEAR\Config.php line 209 - Constant PEAR_CONFIG_DEFAULT_SIG_TYPE already defined
Notice: e:\php\PEAR\Config.php line 218 - Constant PEAR_CONFIG_DEFAULT_SIG_BIN already defined
Notice: e:\php\PEAR\Config.php line 226 - Constant PEAR_CONFIG_DEFAULT_SIG_KEYDIR already defined
Debug Error: e:\php\PEAR\Config.php line 243 - Cannot redeclare class pear:pear_config
Debug session ended.
 

 
Zend Studio Server 5.1.0
PEAR 1.6.1
Config 1.10.11
 
PEAR ставил через go-pear, путь указан правильный.
Система Windows XP, PHP 4.4.7
Без отладки все работает замечательно, ошибок нет.
 
Ставил бряки в конфиге, проблемный код везде вызывается через require_once, так что проблема походу в дебаггере, ведь без оного все пашет.
 
Может, есть идеи (а то даж дебагнуть ничего не могу)?

Всего записей: 226 | Зарегистр. 04-06-2006 | Отправлено: 21:29 05-09-2007
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MaxIkar

Цитата:
Может, есть идеи (а то даж дебагнуть ничего не могу)?

а может не надо

Цитата:
require_once('Config.php')

очевидно же, что два раза подключается.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 01:25 06-09-2007
MaxIkar



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Цитата:
Может, есть идеи (а то даж дебагнуть ничего не могу)?
 
а может не надо
 
в смысле?
 
Цитата:
require_once('Config.php')
 
очевидно же, что два раза подключается.
 

Логично, только:
The require_once() statement includes and evaluates the specified file during the execution of the script. This is a behavior similar to the require() statement, with the only difference being that if the code from a file has already been included, it will not be included again. See the documentation for require() for more information on how this statement works.  
 
а в PEAR этот файл в котором ошибка подключается везде именно через require_once().
Тем более, без дебага эти ошибки не появляются.

Всего записей: 226 | Зарегистр. 04-06-2006 | Отправлено: 20:16 06-09-2007
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MaxIkar

Цитата:
а в PEAR этот файл в котором ошибка подключается везде именно через require_once().  

он может не анализировать нормально require_once если не идет все в скрипте. непонятно же формирование полного куска кода с учетом pear.. но ошибки явно об этом говорят. может файл иначе называется, что подключается..

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:21 06-09-2007
MaxIkar



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
он может не анализировать нормально require_once если не идет все в скрипте. непонятно же формирование полного куска кода с учетом pear.. но ошибки явно об этом говорят. может файл иначе называется, что подключается..

 
Проблемный файл находится в папке PEAR/ директории, в которой собственно находится репозиторий PEAR. Файл который я реквайрю - Config.php. Он реквайрит кучу файлов, из которых в свою очередь реквайрится этот проблемный файл, тоже с имененм Config.php, но - как я сказал - в подпапке PEAR/.
Т.е. есть файлы:
 
Config.php
PEAR/Config.php
 
Папку репозитория для верности включил в состав проекта в Zend Studio, но это (равно как и убирание ее оттуда) не помогло. Так что по логике при включеннной в проект папке с PEAR Студия должна нормально воспринимать require_once из любого файла в проекте.
 
Я ставил бряки, смотрел пошагово, как этот файл выполняется. Он на самом деле при дебагге включается 2 раза, хоть везде прописаны идентичные относительные пути к файлу.

Всего записей: 226 | Зарегистр. 04-06-2006 | Отправлено: 21:58 06-09-2007
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MaxIkar

Цитата:
Я ставил бряки, смотрел пошагово, как этот файл выполняется. Он на самом деле при дебагге включается 2 раза, хоть везде прописаны идентичные относительные пути к файлу.

ну так с точки зрения системы это два разных файла.. но с одинаковым содержимым.
require_once проверяет только пути.


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:02 06-09-2007
MaxIkar



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
 
ну так с точки зрения системы это два разных файла.. но с одинаковым содержимым.
require_once проверяет только пути.  

 
Я, видимо, очень сумбурно объяснил. Я включаю только один файл: Config.php
Он ищется в include_path и берется из директории PEAR.
Далее этот файл с помощью require_once этот файл включает несколько других, которые, в свою очередь несколько раз включают require_once('PEAR/Config.php'); везде одинаково, именно так. Следовательно система знает, что это один и тот же файл, ибо включается ведь файл PEAR/Config.php в контексте Config.php, лежащего в корне репозитория. Т.е. это один и тот же файл даже для системы.

Всего записей: 226 | Зарегистр. 04-06-2006 | Отправлено: 22:34 06-09-2007
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MaxIkar
нашел рекомендацию.. попробуй

Цитата:
edit config.php
 
define( 'PEAR_DIR', FULL_PATH . 'libs/Pear/' );
 
 
Now add folowing line at the end of config.php file before ?>
 
@ini_set('include_path',PEAR_DIR.':'.get_include_path());  

 
второй вариант предлагают использовать  
include_once('Config.php');
вместо  
require_once('Config.php');

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:49 06-09-2007 | Исправлено: Cheery, 23:51 06-09-2007
MaxIkar



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
нашел рекомендацию.. попробуй
 
Цитата:
edit config.php
 
define( 'PEAR_DIR', FULL_PATH . 'libs/Pear/' );
 
 
Now add folowing line at the end of config.php file before ?>
 
@ini_set('include_path',PEAR_DIR.':'.get_include_path());  

 
Спасибо!
Самое странное - то, что я добавил эти строки (с учетом своих путей, ессесно), потом закомментил - и все стало работать! Мистика в действии, млин.

Всего записей: 226 | Зарегистр. 04-06-2006 | Отправлено: 20:06 07-09-2007
MaxIkar



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Если кто-то столкнулся с проблемой отладки в Zend Studio приложений, использующих PEAR Config, то вот решение, которое мне помогло и во второй раз:
1. отредактировать файл Config.php В КОРНЕ репозитория PEAR (напр., c:\php\PEAR\, но не c:\php\PEAR\PEAR\):

Код:
 
<?php
// +----------------------------------------------------------------------+
// | PHP Version 4                                                        |
// +----------------------------------------------------------------------+
// | Copyright (c) 1997-2003 The PHP Group                                |
// +----------------------------------------------------------------------+
// | This source file is subject to version 2.0 of the PHP license,       |
// | that is bundled with this package in the file LICENSE, and is        |
// | available at through the world-wide-web at                           |
// | http://www.php.net/license/2_02.txt.                                 |
// | If you did not receive a copy of the PHP license and are unable to   |
// | obtain it through the world-wide-web, please send a note to          |
// | license@php.net so we can mail you a copy immediately.               |
// +----------------------------------------------------------------------+
// | Author: Bertrand Mansion <bmansion@mamasam.com>                      |
// +----------------------------------------------------------------------+
//
// $Id: Config.php,v 1.22 2006/12/22 00:35:34 aashley Exp $
 
define( 'PEAR_DIR',  'с:\php\Pear\'' );
 
...
 
@ini_set('include_path',PEAR_DIR.':'.get_include_path());
?>  
 

 
2. Для тех, кто ревностно относится к чистоте кода и соответствию его оригинальному из репозитория, можно не только закомментировать, но и вообще убрать эти строчки. У меня даже в таком случае проблема больше не появлялась. Проверено было на PHP4 и 5

Всего записей: 226 | Зарегистр. 04-06-2006 | Отправлено: 22:05 15-12-2007
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » Zend Studio Server и PEAR_Config


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

LiteCoin: LgY72v35StJhV2xbt8CpxbQ9gFY6jwZ67r

Рейтинг.ru