使用Eclipse / xdebug和Windows 2008服务器。昨天我能够成功调试一个php文件。今天,有一个非常相似的PHP文件,它正在跳过线,然后进入遗忘状态。 代码段:
//$data = file_get_contents('php://input');
$data = '[{"ARDivisionNo":"01","CustomerNo":"ABF","ContactCode":"ARTIE JOHN","CustomerName":"American Business Futures","fname":"Artie ","lname":"Johnson","EmailAddress":"philmcintosh@comcast.net","Billing_Address1":"2131 N. 14th Street","Billing_Address2":"Suite 105","Billing_Address3":"Accounting Department","Billing_City":"Irvine","Billing_State":"CA","Billing_Zip":"92618","UDF_FC_ENABLED":"Y","UDF_FC_CUSTOMERID":2.0,"UDF_FC_ADDRESS_BOOK_ID":3.0,"TelephoneNo1":"","FaxNo":""}]';
$json = json_decode($data, true);
Foreach ($json as $i => $row) {
$customers_id = tep_db_prepare_input($row['UDF_FC_CUSTOMERID']);
$customers_firstname = tep_db_prepare_input($row['fname']);
(我在json中粘贴用于调试目的 - 昨天在另一个文件中工作。) 在这个文件中,第一个奇怪的事情是调试器实际停止在注释掉的“$ data = file_get_contents('php:// input');”线。 在下一个“$ data =”行之后,它会跳到“$ customers_id =”行。此时,$ data在变量窗口中显示为空。 关于什么是错误/如何修复的任何想法?
答案 0 :(得分:2)
Xdebug可能看起来与您认为的源代码文件不同。在开始调试之前,您确定先保存了文件吗?
在某些情况下,Xdebug会跳过行,因为它没有看到任何断点。这是因为PHP本身并不总能提供这种可能性。它通常在没有{和}的if / else语句中。为了找出发生了什么,您可以通过添加到php.ini来创建远程调试日志:
xdebug.remote_log=/tmp/xdebug.log
Xdebug会将所有通信数据包写入此日志供您查看。也许这给了一个线索。