免责声明 - 我是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表。出于某种原因,它在我的本地机器上解决了这个问题。
答案 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错误日志文件是否有任何有用的输出。