[SOLVED] Fatal error: Class 'CErrorEvent

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
BazZy
Сообщения: 8
Зарегистрирован: 2010.12.19, 20:33

[SOLVED] Fatal error: Class 'CErrorEvent

Сообщение BazZy »

Добрый день, уважаемые коллеги. Прошу помочь разобраться с вопросом.
Попытался запустить на локальном сервере под Ubuntu 10.10 реально работающий сайт. Замучался делать корректировки, но хоть кое как заработал. Однако, самая большая проблема сама решаться не хочет:

Код: Выделить всё

( ! ) Fatal error: Class 'CErrorEvent' not found in /home/bazzy/htdocs/testsite/protected/controllers/OrdersController.php on line 885
Call Stack
#    Time    Memory    Function    Location
1    0.0002    333812    {main}( )    ../index.php:0
2    0.0090    1549172    CApplication->run( )    ../index.php:17
3    0.0090    1549172    CWebApplication->processRequest( )    ../CApplication.php:135
4    0.0106    1712128    CWebApplication->runController( )    ../CWebApplication.php:120
5    0.0106    1712128    CWebApplication->createController( )    ../CWebApplication.php:326
6    0.0127    2058204    CApplication->handleError( )    ../CApplication.php:0
На хостинге все работает без сучка и задоринки, кроме этого вполне успешно запускал под виндой с помощью XAMPP. А вот в убунте какие то сложности начались. Подскажите, где искать, куда смотреть?

Решение было в следующем:
Вручную был добавлен импорт в config.php:

Код: Выделить всё

Yii::import('system.base.CErrorEvent', true);
Yii::import('system.web.helpers.CHtml', true); 
Что в свою очередь привело к формированию страницы с ошибкой "Call-time pass-by-reference has been deprecated", и тогда то все стало совершенно ясно. В настройках php (php.ini) была изменена директива

Код: Выделить всё

allow_call_time_pass_reference = on
Теперь у меня имеется точная локальная копия работающего сайта.
Последний раз редактировалось BazZy 2011.01.10, 17:26, всего редактировалось 1 раз.
mitallast
Сообщения: 207
Зарегистрирован: 2010.02.21, 20:40
Откуда: Голицыно
Контактная информация:

Re: Fatal error: Class 'CErrorEvent

Сообщение mitallast »

Есть предположение. Под windows нет разницы между названиями файла "CamelCase.php" и "camelcase.php" , в linux\unix среде файлы регистрозависимы.
BazZy
Сообщения: 8
Зарегистрирован: 2010.12.19, 20:33

Re: [SOLVED] Fatal error: Class 'CErrorEvent

Сообщение BazZy »

Проблема решена. Описал решение в первом посте, может кому-нибудь/когда-нибудь пригодиться.
Однако все равно не ясно, почему пришлось вручную пришлось прописывать пути к классам? Уж как я только не менял права доступа на папки, на файлы. Даже 777 выставлял, никакого результата. Это какие то личные заморочки Ubuntu. Кто знает?
mitallast
Сообщения: 207
Зарегистрирован: 2010.02.21, 20:40
Откуда: Голицыно
Контактная информация:

Re: [SOLVED] Fatal error: Class 'CErrorEvent

Сообщение mitallast »

allow_call_time_pass_reference уже считается deprecached. Покажите phpinfo(), пожалуйста.

Вообще я уже больше года под ubuntu && debian linux сижу, ниразу не видел такой проблемы.
BazZy
Сообщения: 8
Зарегистрирован: 2010.12.19, 20:33

Re: [SOLVED] Fatal error: Class 'CErrorEvent

Сообщение BazZy »

Ну вот кусочек, который вас, видимо, интересует.

Код: Выделить всё

Core
PHP Version     5.3.3-1ubuntu9.1
Directive    Local Value    Master Value
allow_call_time_pass_reference    On    On
error_reporting    30711    30711
Сейчас то уже все включено. Однако дело то было не в том, что отключен этот параметр, а в том, что apache сам почему-то не видел пути к CErrorEvent и CHtml. Вот почему - гораздо больший вопрос.
mitallast
Сообщения: 207
Зарегистрирован: 2010.02.21, 20:40
Откуда: Голицыно
Контактная информация:

Re: [SOLVED] Fatal error: Class 'CErrorEvent

Сообщение mitallast »

Так ведь не apache подключает файлы в php, а сам интерпретатор php.
Установлен ли какой-нибуть php-apc, php-xcache и другие кеши, которые ускоряют загрузку файлов интерпретатором? Вполне возможно, что просто кеш работает в жестком режиме.

С php.net http://php.net/manual/en/ini.core.php
In PHP5, allow_call_time_pass_reference is deprecated, in versions prior to PHP 5.3.0, use of this feature will emit an E_COMPILE_WARNING, and in PHP 5.3.0+, the warning is a E_DEPRECATED notice.
Собственно, если в php.ini E_NOTICE выставлен, то при старте php cli или при перезапуске apache с mod_php будет соответствующий warning.

Кстати, и Ваш лог говорит о том, что данная директива по умолчанию включена. Что могло заставить ее выключить, вот уж ума не приложу.

PS. Мой лог, проблем с передачей по ссылке не испытываю.

Код: Выделить всё

PHP Version => 5.3.3-1ubuntu9.1
Directive => Local Value => Master Value
allow_call_time_pass_reference => Off => Off
error_reporting => 22527 => 22527
BazZy
Сообщения: 8
Зарегистрирован: 2010.12.19, 20:33

Re: [SOLVED] Fatal error: Class 'CErrorEvent

Сообщение BazZy »

mitallast писал(а):Так ведь не apache подключает файлы в php, а сам интерпретатор php.
Установлен ли какой-нибуть php-apc, php-xcache и другие кеши, которые ускоряют загрузку файлов интерпретатором? Вполне возможно, что просто кеш работает в жестком режиме.
Нет, ничего подобного не установлено
Ответить