Причуда LAMP / CakePHP - работает локально, а не на удаленном сервере. Советы по отладке? - PullRequest
0 голосов
/ 06 марта 2011

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ - Я полный нуб PHP - ищу помощь / советы о том, как отладить эту проблему ...

У меня есть приложение на основе PHP / CakePHP, работающее в Linux / CentOS и MySQL.

Он также работает на моей локальной машине разработчика (OSX Snow Leopard).

Однако одна небольшая часть приложения ведет себя непоследовательно между ними.

Я скопировал БД и код PHP с сервера на мою локальную машину - так что я уверен, что они в стоке. Обратите внимание, что приложение изначально было разработано в другом месте, а затем развернуто на сервере.

Разница в том, что есть страница типа master / detail - на обоих сайтах master часть работает нормально, но часть detail работает только для моей локальной / OSX версии.

Я проверил базу данных, и подробные записи, кажется, присутствуют, как и ожидалось.

Версия PHP немного отличается.

Сервер Linux:

HP:  Error parsing /usr/local/lib/php.ini on line 803
PHP 5.2.16 (cli) (built: Mar  1 2011 11:48:38) 
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies
    with eAccelerator v0.9.6.1, Copyright (c) 2004-2010 eAccelerator, by eAccelerator
    with the ionCube PHP Loader v3.3.20, Copyright (c) 2002-2010, by ionCube Ltd.

Server version: Apache/2.2.17 (Unix)
Server built:   Mar  1 2011 11:42:56
Cpanel::Easy::Apache v3.2.0 rev5291

OSX Local:

PHP 5.3.3 (cli) (built: Aug 22 2010 19:41:55) 
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

Server version: Apache/2.2.15 (Unix)
Server built:   Jul  1 2010 17:16:33

Я попытался перезапустить Apache, если это была проблема с кэшированием. Я попытался изменить основные данные через командную строку mysql, и эти изменения отображаются.

Попытка включения display_errors / display_startup_errors - но ничего не отображается.

Интересно, есть ли какие-нибудь советы по отладке CakePHP ... возможно, стоит разобраться с этим.

Я планирую установить приложение на другом сервере, чтобы посмотреть, работает ли оно и / или помогает выявить разницу / проблему.

PHP-код, который, кажется, является проблемой, заключается в следующем (он находится в одном из контроллеров cakePHP):

    $carInsuranceQuoteRequest = $this->CarInsuranceQuoteRequest->find('first', array(
        'conditions' => array(
            'CarInsuranceQuoteRequest.id' => $id,
        ) ,
        'contain' => array(
            'Company' => array(
                'Attachment'
            ),
            'CarInsuranceVehicleType',
            'CarInsuranceVehicleMake',
            'CarInsuranceVehicleModel',
            'CarInsuranceVehicleVersion',
            'CarInsuranceCoverageType',
            'CarInsuranceQuoteResponse' => array(
                'CarInsuranceQuoteSite'
            ),
        ),
    ));

Объект запроса цитаты возвращается нормально при обеих установках. Но объект ответа кавычки всегда пуст в окне Linux, даже если он выглядит нормально в базе данных mysql. Ответы отображаются нормально под OSX.

Ошибка PHP в строке 803:

 ; url_rewriter.tags: (ini file field description not available)
url_rewriter.tags = a=href,area=href,frame=src,input=src,form=,fieldset=

Заранее благодарен за любые советы, Крис

FWIW - моя проблема была из-за того, что модели cakePHP были неверны, и поэтому он не мог ориентироваться в отношениях. Я изменил таблицу MySQL. По какой-то причине это перешло на мою локальную машину.

1 Ответ

2 голосов
/ 06 марта 2011

Крис,

Попробуйте включить отладочный вывод CakePHP в своем приложении.В файле app / config / core.php вы должны найти строку, подобную этой настройке уровня отладки CakePHP:

    Configure::write('debug', 0);

Измените его на:

    Configure::write('debug', 1);

или более высокое значение.Это должно привести к некоторому выводу ошибок и поможет вам в правильном направлении сузить источник проблем.

Не забудьте установить его обратно в 0 для производственной конфигурации.Документация для этого следующая:

/**
 * CakePHP Debug Level:
 *  * Production Mode:
 *      0: No error messages, errors, or warnings shown. Flash messages redirect.
 *
 * Development Mode:
 *      1: Errors and warnings shown, model caches refreshed, flash messages halted.
 *      2: As in 1, but also with full debug messages and SQL output.
 *      3: As in 2, but also with full controller dump.
 *
 * In production mode, flash messages redirect after a time interval.
 * In development mode, you need to click the flash message to continue.
 */

Также не забудьте проверить файл журнала ошибок Apache на наличие полезных выходных данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...