LAMP / CakePHP怪癖 - 在本地工作,而不是在远程服务器上工作。调试技巧?

时间:2011-03-06 17:56:22

标签: php mysql cakephp apache2

免责声明 - 我是PHP总菜单 - 寻找有关如何调试此问题的一些帮助/提示......

我有一个基于PHP / CakePHP的应用程序在Linux / CentOS和MySQL上运行。

它也在我的本地开发机器(OSX Snow Leopard)上运行。

然而,应用程序的一小部分在两者之间表现不一致。

我已将数据库和PHP代码从服务器复制到我的本地计算机 - 所以很确定它们已经存在。请注意,该应用最初是在其他地方开发的,然后部署到服务器。

不同的是,有一个主/详细类型页面 - 在两个站点上,主要部分工作正常,但细节部分仅适用于我的本地/ 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 db中似乎没问题。 OSX下的回复显示正常。

第803行的PHP错误是

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

提前感谢任何提示,Chris

FWIW - 我的问题是由于cakePHP模型错了,所以它无法导航关系。我改变了mysql表。出于某种原因,它在我的本地机器上解决了这个问题。

1 个答案:

答案 0 :(得分:2)

克里斯,

尝试在您的应用中启用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错误日志文件是否有任何有用的输出。